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?

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];

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];

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;
]

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.