web-dev-qa-db-fra.com

L'utilisation de [UIColor colorWithRed: green: blue: alpha:] ne fonctionne pas avec UITableView seperatorColor?

J'essaie de configurer une couleur de séparateur gris foncé. Pourquoi les suivants ne font-ils rien?

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

renvoie une table sans séparateurs du tout.

Dès que j'utilise [UIColor blackColor], les séparateurs me conviennent parfaitement. Quel est le problème?

86
skålfyfan

Vous devez diviser par 255.0

Comme je n’utilise que très rarement des valeurs comprises entre 1,0 et 0,0, j’ai créé une catégorie très simple de UIColor qui crée elle-même la division en désordre: (from 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

Donc, vous pouvez juste faire (Si vous importez la catégorie I liée à ci-dessus):

[UIColor colorWithR:127 G:127: B:127 A:1];
211
Jonathan.

Parce que votre méthode UIColor nécessite un float de 0-1, pas 0-255. Vous devez diviser toutes vos valeurs RVB par 255.0, comme suit:

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

Vous devez diviser vos valeurs avec 255, car la plage est 0-1. Prenez 127/255 = 0.49f et tapez-le plutôt. C'est là, c'est juste blanc :)

edit: cause des commentaires, j’ai ajouté du code sur la façon de le résoudre:

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