使用[ UIColor ColorWithRed: green: blue: alpha: ]不能与 UITableView seperatorColor 一起工作吗?

我试图配置一个深灰色的分离器颜色。为什么下面什么也不做?

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

返回一个完全没有分隔符的表。

一旦我使用 [ UIColor blackColor ],然后我得到分离器就好了。这是怎么回事?

73539 次浏览

You have to divide your values with 255, because the range is 0-1. Take 127/255 = 0.49f and type in that instead. It's there, it's just white :)

edit: cause of comments, I added some code as to how I solve it:

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

Because your UIColor method requires a float from 0-1, not 0-255. You need to divide all your RGB values by 255.0, as follows:

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

You need to divide by 255.0

Because I hardly ever use values between 1.0 and 0.0, I created a very simple UIColor category that does the messy looking division by itself: (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

So you can just do(If you import the category I linked to above):

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

There are two new methods in UIColor that accept integer values from 0 to 255:

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

and

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

It's not in the documentation but I've used it and it works like a charm.