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