Pregunta

Estoy tratando de darle a tableviewcell diferentes backgroundColor s con colorwithPatternImage y no está funcionando como se esperaba. La documentación no dice nada sobre solo poder usar un patrón a la vez.

Digo que tengo 3 filas y configuro el fondo de esta manera:

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

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

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

Las 3 filas serían rojas. Es como si hubiera un color global que se está devolviendo.

colorWithPatternImage devuelve kCGColorSpaceModelPattern 1 para cada llamada, sin importar en qué imagen se pase. Si era cierto que solo tiene 1 patrón global a la vez, entonces el color debe ser el último conjunto, en otras palabras, azul.

Esto no tiene sentido. ¿Alguien tiene alguna experiencia interna sobre lo que Apple está haciendo aquí?

EDIT Incluso utilizo un patrón diferente en una vista completamente separada y todavía afecta los patrones de la otra vista. Estoy convencido, aunque la documentación no dice esto, que está limitado a un patrón de imagen UIColor a la vez. Triste.

¿Fue útil?

Solución

Por lo que puedo ver, esto no es verdad o ya no lo es. Tengo aquí un par de UITableViewCells, donde cada uno tiene una imagen de fondo diferente, sin ningún problema.

Otros consejos

¿Qué es Cell1? ¿Dónde (en qué método) estás configurando estos?

Yo diría que deberías estar haciendo todo esto en

- (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"]];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top