Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 900
Brenden Avatar asked Sep 10 '09 17:09

Brenden


2 Answers

What is Cell1? Where (in what method) are you setting these?

I would say that you should be doing all this in

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {      
      // create cell
    }

    // Set up the cell...

    // set up a background color
    if (something)
        cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"red.png"]];
    else (another)
        cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"green.png"]];
    else
        cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"blue.png"]];
}
like image 66
mahboudz Avatar answered Oct 12 '22 17:10

mahboudz


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.

like image 29
radiospiel Avatar answered Oct 12 '22 18:10

radiospiel