85

I'm trying to configure a dark gray seperator color. Why does the following do nothing?

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

returns a table with no seperators at all.

As soon as I use [UIColor blackColor] then I get seperators just fine. What's the deal?

4 Answers 4

210

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]; 
Sign up to request clarification or add additional context in comments.

4 Comments

Is a value of 0-1 standard in the industry? You can open up any photo editing application and the color picker gives you a value from 0-255, regardless I'm curious as to why they would make you do the extra work dividing?
@Nick - that's a good question. I suspect it's because UIColor needs to support 'deep color' (that is, colors with a depth greater than 24 bit, or 32 with alpha). Of course, that still doesn't change the fact a built-in convenience method (along with hex support) would clearly be quite helpful to many developers!
also, the same works for hex values. as sometimes we get the colors as hex, in order to not calculate them by hand we can use: for example for #C94557 it would be: [UIColor colorWithRed:(CGFloat)0xC9/0xFF green:(CGFloat)0x45/0xFF blue:(CGFloat)0x57/0xFF alpha:1.0];
There are two new methods in UIColor that accept integer values from 0 to 255. See my answer below.
59

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

Comments

3

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

Comments

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.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.