2015-04-06 27 views
18

Ich versuche, eine benutzerdefinierte RGBCGColor mit swift zu erstellen, um als eine Rahmenfarbe für eine UIButton zu verwenden. Ich habe folgenden Code versucht, aber die Farbe ist nicht sichtbar:Wie kann ich eine cgcolor aus RGB-Werten erhalten?

var red = UIColor(red: 100.0, green: 130.0, blue: 230.0, alpha: 1.0) 
self.layer.borderColor = red.CGColor 

Gibt es eine Möglichkeit ein CGColor direkt von RGB-Werten zu schaffen?

+0

Dies auch verwirrt mich, bei der Dokumentation der Suche habe ich versucht, CGColor zu verwenden (rot: .., grün: .., blau: .., alpha: ..) Allerdings habe ich gerade nach dem erneuten Lesen gesehen, dass dieser Konstruktor unter iOS nicht verfügbar ist. Warum sind diese Unterschiede? Und wie kann ich Code schreiben, der auf dem Mac und auf iOS läuft? – Nils

Antwort

46

Sie müssen die Werte zwischen 0 und 1,0 angeben. So teilen sich die RGB-Werte von 255

Ihr Code ändern zu

var red = UIColor(red: 100.0/255.0, green: 130.0/255.0, blue: 230.0/255.0, alpha: 1.0) 
self.layer.borderColor = red.CGColor 
+0

@Divz Danke :) – Shruti

+0

@alionthego Ihre Begrüßung :). Bitte akzeptieren Sie die Antwort, wenn es hilfreich war und Ihr Problem gelöst wurde. – Shruti

+0

Hallo. akzeptierte es einfach. Ich wollte früher akzeptieren, aber ich musste aus irgendeinem Grund 5 Minuten warten ... nochmals vielen Dank. – alionthego

0

Vielleicht alles, was Sie brauchen gesetzt, um die borderWidth, die standardmäßig auf 0, so dass es nicht sichtbar ist:

self.layer.borderWidth = 1.0 

Für den Fall, können Sie die cornerRadius einstellen, wenn Sie es brauchen abgerundet ... könnte nützlich sein ;-)

self.layer.cornerRadius = 4.0 
+0

@Shruti ist korrekt über die 'CGFloat' Werte, die Sie an UICcolor übergeben sollten (...) –

+0

hi. Danke für deine Antwort. ich hatte bereits die borderWidth gesetzt. Die obige Antwort, bei der die Werte durch 255 geteilt wurden, war die Lösung, nach der ich suchte. Danke. – alionthego

5

Auf Mac OS X gibt es CGColorCreateGenericRGB(), aber es existiert nicht auf iOS. Sie können jedoch CGColorCreate mit entsprechenden Parametern verwenden.

self.layer.borderColor = CGColorCreate(CGColorSpaceCreateDeviceRGB(), [1.0, 0.5, 0.5, 1.0]) 

Die Werte im Array sind in der Reihenfolge ihres Auftretens: Rot, Grün, Blau und Alpha. Genau wie UIColor :)

https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGColor/#//apple_ref/c/func/CGColorCreate

+0

vielen Dank. Ich fand diese Methode in der Dokumentation, arbeitete aber mit iOS. Ich habe mich gefragt, warum ich es nicht benutzen konnte, aber jetzt hast du klargestellt, dass es nur für os x verfügbar ist. Vielen Dank. – alionthego

1
UImage *newImage = [self imageWithColor:[UIColor colorWithRed:200/255. green:228/255. blue:194/255. alpha:0.99]]; 
1

Sie können, dass 3 bis eine Zeile in Swift runter:

avLayer.backgroundColor = UIColor.red.CGColor