Search code examples
iphoneuitableviewuicolor

UIColor colorWithPatternImage uses only one image


I'm trying to give tableviewcell's different backgroundColors with colorwithPatternImage and it is not working as expected. The documentation says nothing about only being able to use one pattern at a time.

Say I have 3 rows and I set the background like so:

Cell1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"red.png"]];

Cell2.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"green.png"]];

Cell3.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"blue.png"]];

All 3 rows would be red. It's as if there is some global color that is being returned.

colorWithPatternImage returns kCGColorSpaceModelPattern 1 for each call no matter what image is passed in. If it was true that you only have 1 global pattern at a time, then the color should be the last one set, in other words blue.

This makes no sense. Does anyone have any inside expertise on what Apple is doing here?

EDIT I even use a different pattern in a completely separate view and it still affects the other view's patterns. I am convinced, though the documentation doesn't state this, that you are limited to one UIColor image pattern at a time. Sad.


Solution

  • As far I can see this is not or no longer true. I have here a couple of UITableViewCells, where each has a different backgroundImage, without any problems.