UIColor colorWithPatternImage использует только одно изображение - PullRequest
5 голосов
/ 10 сентября 2009

Я пытаюсь дать tableviewcell разные backgroundColor с colorwithPatternImage, и это не работает, как ожидалось. В документации ничего не говорится о возможности использовать только один шаблон за раз.

Скажем, у меня есть 3 строки, и я установил фон следующим образом:

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

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

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

Все 3 ряда будут красными. Как будто есть какой-то глобальный цвет, который возвращается.

colorWithPatternImage возвращает kCGColorSpaceModelPattern 1 для каждого вызова независимо от того, какое изображение передается. Если это правда, что у вас есть только 1 глобальный шаблон за один раз, то цвет должен быть последним установленным, другими словами, синий .

Это не имеет смысла. Кто-нибудь знает, что Apple делает здесь?

EDIT Я даже использую другой шаблон в совершенно отдельном виде, и он все еще влияет на шаблоны другого вида. Я убежден, хотя в документации это не указано, что вы ограничены одним образцом изображения UIColor за раз. Sad.

Ответы [ 2 ]

5 голосов
/ 10 сентября 2009

Что такое Cell1? Где (каким способом) вы их устанавливаете?

Я бы сказал, что вы должны делать все это в

- (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"]];
}
1 голос
/ 22 октября 2011

Насколько я понимаю, это не так или больше не правда. У меня есть пара UITableViewCells, каждый из которых имеет различный backgroundImage, без каких-либо проблем.

...