2009-09-10 32 views
5

Estoy tratando de dar 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.UIColor colorWithPatternImage utiliza una sola imagen

Decir que tengo 3 filas y establecer el fondo de este modo:

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 rojo. Es como si hubiera algún color global que se devuelve.

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

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

EDIT Incluso uso 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 lo indica, de que está limitado a un patrón de imagen de UIColor a la vez. Triste.

Respuesta

1

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

+0

gracias por la actualización :) – Brenden

5

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

diría que usted debe hacer 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"]]; 
} 
+0

Lo estoy haciendo en ese método. Por lo tanto, se devuelve una celda para que la tabla pueda mostrarla. Las celdas [1-3] son ​​en realidad una declaración de caso en un interruptor, – Brenden

Cuestiones relacionadas