[UIColor colorWithRed: green: blue: alpha:] kullanımı UITableView seperatorColor ile çalışmaz mı?


86

Koyu gri ayırıcı rengi yapılandırmaya çalışıyorum. Aşağıdakiler neden hiçbir şey yapmıyor?

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

hiç ayırıcısı olmayan bir tablo döndürür.

[UIColor blackColor] 'u kullanır kullanmaz seperatörleri iyi alıyorum. Anlaşma ne?

Yanıtlar:


211

Bölmen gerek 255.0

1.0 ile 0.0 arasındaki değerleri neredeyse hiç kullanmadığım için, dağınık görünümlü bölümü kendi başına yapan çok basit bir UIColor kategorisi oluşturdum: ( http://github.com/Jon889/JPGeneral adresinden )

//.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

Yani şunları yapabilirsiniz (Eğer yukarıda bağlantı verdiğim kategoriyi içe aktarırsanız):

[UIColor colorWithR:127 G:127: B:127 A:1];

5
Sektörde 0-1 standardı değeri var mı? Herhangi bir fotoğraf düzenleme uygulamasını açabilirsiniz ve renk seçici size 0-255 arasında bir değer verir, neden fazladan işi bölmek için size neden yaptıracaklarını merak etmeme gerek yok.
The Muffin Man

1
@Nick - bu iyi bir soru. Bunun UIColor'derin rengi' (yani derinliği 24 bit veya alfa ile 32'den büyük renkler) desteklemesi gerektiğinden şüpheleniyorum . Elbette bu, yerleşik bir kolaylık yönteminin (onaltılık desteğin yanı sıra) birçok geliştiriciye oldukça yardımcı olacağı gerçeğini değiştirmez!
lxt

aynı şey onaltılık değerler için de geçerlidir. Bazen renkleri onaltılık olarak alırız, bunları elle hesaplamamak için kullanabiliriz: örneğin # C94557 için şu olur: [UIColor colorWithRed: (CGFloat) 0xC9 / 0xFF green: (CGFloat) 0x45 / 0xFF blue: (CGFloat) 0x57 / 0xFF alfa: 1.0];
memical

UIColor'da 0'dan 255'e kadar tamsayı değerlerini kabul eden iki yeni yöntem vardır. Aşağıdaki cevabıma bakın.
Blip

59

Çünkü UIColor yönteminiz 0-255 arasında bir kayan nokta gerektiriyor. Tüm RGB değerlerinizi aşağıdaki gibi 255.0'a bölmeniz gerekir:

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

3

Değerlerinizi 255'e bölmelisiniz, çünkü aralık 0-1'dir. 127/255 = 0.49f alın ve bunun yerine yazın. Orada, sadece beyaz :)

düzenleme: yorumların nedeni, nasıl çözeceğimle ilgili bazı kodlar ekledim:

-(float)getRGBValue:(int) rgbValue{  
    return rgbValue/255.0;
]

1

UIColor0 ile 255 arasındaki tamsayı değerlerini kabul eden iki yeni yöntem vardır :

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

ve

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

Belgelerde yok ama kullandım ve bir cazibe gibi çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.