2010-07-20 15 views
7

Ho un UITableView e vorrei applicare un'immagine di sfondo a tutte le celle. La mia altezza per ogni cella è variabile. Come devo fare per creare l'immagine di sfondo?Come impostare l'immagine di sfondo UITableViewCell con altezze diverse?

cell.contentView.backgroundColor = [UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
+0

Questo non funziona per me (dopo aver fissato l'errore di battitura). –

risposta

3

Un'idea è posizionare un UIImage con un'immagine estensibile su di esso. In questo modo, non importa quale sia l'altezza della riga, l'immagine può allungarsi per corrispondere.

Si può anche fare qualcosa di simile a quello che Matt ha fatto here with a gradient layer

+0

Puoi descrivere l'immagine estensibile? Avrò bisogno di creare un'immagine da 1x55 pixel (solo un esempio) e questo si estenderà automaticamente sul piano x o è necessario un codice aggiuntivo? –

+3

Fondamentalmente basta dare un'immagine e poi dirgli quali parti non sono estensibili tramite '[[UIImage imageNamed: @" someBGImage.png "] stretchableImageWithLeftCapWidth: 5 topCapHeight: 5];' dove i 5 pixel sono la parte che non è t estensibile (come un bordo). Maggiori informazioni http://developer.apple.com/iphone/library/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/instm/UIImage/stretchableImageWithLeftCapWidth:topCapHeight: – iwasrobbed

2

Nel metodo cellForRowAtIndexPath si può dare il colore di sfondo della cella

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


{ 
    static NSString *cellIdentifier = @"Cell"; 
    UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (cell == nil) 
    {  
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
    } 
// for cell background color 
    cell.backgroundView =[[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"tab2.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]; 

// for selection color  
    cell.selectedBackgroundView =[[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"selected.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]; 
    return cell; 
} 
Problemi correlati