Die Antwort unten sollte ein Kommentar gewesen sein. Hoppla.
Defmech
17
Hinweis: Dies funktioniert nur für Farben im RGB-Bereich. Dies funktioniert beispielsweise unter [UIColor whiteColor] nicht, da dies nicht in RGB erfolgt.
Jason
2
Ich habe einen Beispielcode in dieser Frage gepostet, damit dies in Nicht-RGB-Kontexten funktioniert
Jesse Rusak
4
Wenn jemand ein Problem damit findet, wie man Werte erhält colors, kann man so etwas schreiben wie:CGFloat red = colors[0];
Hemang
error: <EXPR>:3:1: error: 'CGColorGetComponents' has been replaced by property 'CGColor.components'
pkamb
119
In iOS 5 können Sie Folgendes verwenden:
CGFloat red =0.0, green =0.0, blue =0.0, alpha =0.0;[multipliedColor getRed:&red green:&green blue:&blue alpha:&alpha];
Seien Sie gewarnt, dass diese Methode nur erfolgreich ist, wenn sich die Startfarbe in einem "kompatiblen Farbraum" befindet, der je nach Gerät / Betriebssystem variieren kann. Zum Beispiel habe ich gerade festgestellt, dass das Aufrufen von [UIColor darkGrayColor] auf einem iPad 2 mit iOS 7 fehlschlägt. Die gleiche Farbe funktioniert jedoch auch auf einem iPad Air mit iOS 8.
devios1
@ devios1 Dies kann wahrscheinlich gelöst werden, indem man zuerst die Farbe serialisiert und dann deserialisiert, indem NSKeyedArchiverman wie folgt vorgeht :multipliedColor = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject: multipliedColor]];
Albert Renshaw
40
SWIFT 3 & 4
Ich habe festgestellt, dass cgColor.components nicht immer 4 Farbwerte zurückgibt, daher habe ich dies geändert, damit sie von einem CIColor-Wrapper abgerufen werden
Hat es nicht eine Warnung für den Versuch generiert, CGFloat implizit in Float umzuwandeln? :)
Braden
5
UIColor*color =[[UIColor greenColor] retain];//line 1//OR(You will have color variable either like line 1 or line 2)
color = curView.backgroundColor;//line 2CGColorRef colorRef =[color CGColor];int _countComponents =CGColorGetNumberOfComponents(colorRef);if(_countComponents ==4){constCGFloat*_components =CGColorGetComponents(colorRef);CGFloat red = _components[0];CGFloat green = _components[1];CGFloat blue = _components[2];CGFloat alpha = _components[3];NSLog(@"%f,%f,%f,%f",red,green,blue,alpha);}[color release];
Seit iOS 2.0 gibt es eine private Instanzmethode auf UIColorgenannt , styleStringdie ein RGB- oder RGBA - String Darstellung der Farbe zurückkehrt, auch für Farben wie whiteColor außerhalb des RGB - Raum.
In Swift können Sie einen Bridging-Header verwenden, um die Schnittstelle verfügbar zu machen. Mit reinem Swift müssen Sie ein @objcProtokoll mit der privaten Methode und unsafeBitCastUIColormit dem Protokoll erstellen :
let color = myUIColor.cgColor.components let r = color! [0] let g = color! [1] let b = color! [2]
Gurjinder Singh
0
Ich wollte die Hintergrundfarbe der UITableViewStyle"UITableViewStyleGrouped" erhalten, also habe viewDidAppear:ich in der Methode den Code hinzugefügt:
Die Verwendung von HandyUIKit macht dies wirklich einfach :
importHandyUIKitlet color =UIColor(red:0.1, green:0.2, blue:0.3, alpha:0.4)// get any of the rgba values
color.rgba.red // => 0.1
color.rgba.green // => 0.2
color.rgba.blue // => 0.3
color.rgba.alpha // => 0.4
Es gibt auch eine ähnliche Option, um hsbaWerte abzurufen :
let color =UIColor(hue:0.1, saturation:0.2, brightness:0.3, alpha:0.4)// you can get any of the hsba values, too
color.hsba.hue // => 0.1
color.hsba.saturation // => 0.2
color.hsba.brightness // => 0.3
color.hsba.alpha // => 0.4
Installieren Sie es einfach mit Karthago und los geht's.
Antworten:
Diese Links enthalten weitere Details:
quelle
colors
, kann man so etwas schreiben wie:CGFloat red = colors[0];
error: <EXPR>:3:1: error: 'CGColorGetComponents' has been replaced by property 'CGColor.components'
In iOS 5 können Sie Folgendes verwenden:
quelle
NSKeyedArchiver
man wie folgt vorgeht :multipliedColor = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject: multipliedColor]];
SWIFT 3 & 4
Ich habe festgestellt, dass cgColor.components nicht immer 4 Farbwerte zurückgibt, daher habe ich dies geändert, damit sie von einem CIColor-Wrapper abgerufen werden
SWIFT 2
Es ist nicht der effizienteste Weg, daher würde ich diesen nicht verwenden, wenn eine Ansicht ständig neu gezeichnet wird.
quelle
Hoffentlich wird dies hilfreich sein
quelle
Habe gerade eine Kategorie dafür gemacht.
Geht so etwas wie:
Teil
eppz!kit
mit mehr UIColor Goodies .quelle
Vielen Dank. Ich musste das
const
am Anfang der Zeile hinzufügen , da es eine Warnung erzeugte.quelle
quelle
Swift 3 Version von David Rees Antwort:
quelle
Sie können CIColor-Komponenten verwenden (Swift 5).
Dies funktioniert auch für Nicht-RGB-Farbräume
quelle
Seit iOS 2.0 gibt es eine private Instanzmethode auf
UIColor
genannt ,styleString
die ein RGB- oder RGBA - String Darstellung der Farbe zurückkehrt, auch für Farben wie whiteColor außerhalb des RGB - Raum.Ziel c:
In Swift können Sie einen Bridging-Header verwenden, um die Schnittstelle verfügbar zu machen. Mit reinem Swift müssen Sie ein
@objc
Protokoll mit der privaten Methode undunsafeBitCast
UIColor
mit dem Protokoll erstellen :quelle
Die am häufigsten gewählte Antwort ist veraltet:
Verwenden Sie stattdessen
myUIColor.cgColor.components
quelle
Ich wollte die Hintergrundfarbe der
UITableViewStyle
"UITableViewStyleGrouped" erhalten, also habeviewDidAppear:
ich in der Methode den Code hinzugefügt:NSLog(@"%@", self.tableView.backgroundView.backgroundColor);
Es hat getan, was ich erwartet hatte, und das Protokoll zurückgegeben:
UIDeviceRGBColorSpace 0.937255 0.937255 0.956863 1
Kurz gesagt, geben Sie einfach ein
NSLog(@"%@", [UIColor whateverColor]);
quelle
Die Verwendung von HandyUIKit macht dies wirklich einfach :
Es gibt auch eine ähnliche Option, um
hsba
Werte abzurufen :Installieren Sie es einfach mit Karthago und los geht's.
Ich hoffe, es hilft!
quelle
Einige nützliche Makros, die ich für dieses und andere Farbsteuerelemente erstellt habe:
In Ihrem Fall würden Sie nur verwenden
Makros:
quelle
Stellen Sie Ihre UIColor so ein
Dies ist für Xamarin ios ... aber sicher gibt es eine Methode wie diese in Kürze.
quelle