Die Verwendung von [UIColor colorWithRed: green: blue: alpha:] funktioniert nicht mit UITableView seperatorColor?

86

Ich versuche eine dunkelgraue Trennfarbe zu konfigurieren. Warum macht das Folgende nichts?

self.tableView.seperatorStyle = UITableViewCellSeperatorStyleSingleLine;
self.tableView.seperatorColor = [UIColor colorWithRed: 127 green:127 blue:127 alpha:1];

Gibt eine Tabelle ohne Trennzeichen zurück.

Sobald ich [UIColor blackColor] benutze, bekomme ich gut Separatoren. Was ist das Problem?

skålfyfan
quelle

Antworten:

211

Sie müssen durch teilen 255.0

Da ich kaum Werte zwischen 1,0 und 0,0 verwende, habe ich eine sehr einfache UIColor-Kategorie erstellt, die die unordentlich aussehende Unterteilung selbst durchführt: (von http://github.com/Jon889/JPGeneral )

//.h file
@interface UIColor (JPExtras)
+ (UIColor *)colorWithR:(CGFloat)red G:(CGFloat)green B:(CGFloat)blue A:(CGFloat)alpha;
@end

//.m file
@implementation UIColor (JPExtras)
+ (UIColor *)colorWithR:(CGFloat)red G:(CGFloat)green B:(CGFloat)blue A:(CGFloat)alpha {
    return [UIColor colorWithRed:(red/255.0) green:(green/255.0) blue:(blue/255.0) alpha:alpha];
}
@end

Sie können also einfach Folgendes tun (Wenn Sie die Kategorie importieren, auf die ich oben verlinkt habe):

[UIColor colorWithR:127 G:127: B:127 A:1];
Jonathan.
quelle
5
Ist ein Wert von 0-1 Standard in der Branche? Sie können jede Fotobearbeitungsanwendung öffnen, und der Farbwähler gibt Ihnen einen Wert zwischen 0 und 255 an, unabhängig davon, ob Sie neugierig sind, warum Sie die zusätzliche Arbeit aufteilen müssen.
Der Muffin-Mann
1
@ Nick - das ist eine gute Frage. Ich vermute, es liegt daran UIColor, dass "tiefe Farbe" unterstützt werden muss (dh Farben mit einer Tiefe von mehr als 24 Bit oder 32 mit Alpha). Das ändert natürlich nichts an der Tatsache, dass eine integrierte Komfortmethode (zusammen mit Hex-Unterstützung) für viele Entwickler sehr hilfreich wäre!
Lxt
Gleiches gilt auch für Hex-Werte. Da wir die Farben manchmal als Hex erhalten, können wir sie verwenden, um sie nicht von Hand zu berechnen: Zum Beispiel für # C94557: [UIColor colorWithRed: (CGFloat) 0xC9 / 0xFF grün: (CGFloat) 0x45 / 0xFF blau: (CGFloat) 0x57 / 0xFF alpha: 1,0];
memical
In UIColor gibt es zwei neue Methoden, die ganzzahlige Werte von 0 bis 255 akzeptieren. Siehe meine Antwort unten.
Blip
59

Weil Ihre UIColor-Methode einen Gleitkommawert von 0-1 und nicht von 0-255 erfordert. Sie müssen alle Ihre RGB-Werte wie folgt durch 255,0 teilen:

self.tableView.seperatorColor = [UIColor colorWithRed:127.0f/255.0f green:127.0f/255.0f blue:127.0f/255.0f alpha:1.0f];
lxt
quelle
3

Sie müssen Ihre Werte mit 255 teilen, da der Bereich 0-1 ist. Nehmen Sie 127/255 = 0.49f und geben Sie diese stattdessen ein. Es ist da, es ist nur weiß :)

edit: wegen der kommentare habe ich einen code hinzugefügt, wie ich es löse:

-(float)getRGBValue:(int) rgbValue{  
    return rgbValue/255.0;
]
Stian Storrvik
quelle
1

Es gibt zwei neue Methoden UIColor, die ganzzahlige Werte von 0 bis 255 akzeptieren:

UIColor(red: Int, green: Int, blue: Int)

und

UIColor(alpha: Float, red: Int, green: Int, blue: Int)

Es ist nicht in der Dokumentation, aber ich habe es verwendet und es funktioniert wie ein Zauber.

Blip
quelle