2009-05-18 1 views
6

Come montare UIImage nella cella di UITableView, UITableViewCell (?).Come ridimensionare l'immagine per adattarla alla cella UITableView?

Ti addSubview-cell o c'è un modo per ridimensionare cell.image o UIImage prima che venga assegnato a cell.image?

voglio mantenere il default dimensione della cella (qualunque esso sia quando si init con un rettangolo zero) e desidera aggiungere un'icona come immagini su ogni voce. Le immagini sono leggermente più grandi delle dimensioni della cella (dimensione della riga della tabella).

Credo che il codice simile a questo (dalla parte superiore della mia testa):

UIImage * image = [[UIImage alloc] imageWithName:@"bart.jpg"]; 
cell = ... dequeue cell in UITableView data source (UITableViewController ...) 
cell.text = @"bart"; 
cell.image = image; 

Che cosa devo fare per ridimensionare l'immagine per adattarla al formato cellulare? Ho visto qualcosa di simile:

UIImageView * iview = [[UIImageView alloc] initWithImage:image]; 
iview.frame = CGRectMake(...); // or something similar 
[cell.contentView addSubview:iview] 

È possibile che questo aggiungerà immagine da cellulare e io in grado di calcolare le dimensioni per adattarsi, però:

  1. io non sono sicuro se c'è una migliore modo, non è troppo in alto per aggiungere UIImageView solo per ridimensionare la cell.image?
  2. Ora la mia etichetta (cell.text) deve essere spostato come viene oscurata da immagine, ho visto una soluzione in cui basta aggiungere il testo come etichetta:

Esempio:

UILabel * text = [[UILable alloc] init]; 
text.text = @"bart"; 
[cell.contentView addSubview:iview]; 
[cell.contentView addSubview:label]; 
// not sure if this will position the text next to the label 
// edited original example had [cell addSubview:label], maybe that's the problem 

Qualcuno potrebbe indicarmi la direzione corretta?

EDIT: Doh [cell.contentview addSubview:view] non [cell addSubview:view] forse dovrei guardare a questo:

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = ...; 
    CGRect frame = cell.contentView.bounds; 
    UILabel *myLabel = [[UILabel alloc] initWithFrame:frame]; 
    myLabel.text = ...; 
    [cell.contentView addSubview:myLabel]; 
    [myLabel release]; 
} 
+0

Nessun altro suggerimenti.? – stefanB

risposta

2

This site posts code sul ridimensionamento un UIImage*. Puoi giocare con il ridimensionamento per ottenere il giusto rapporto per lo UIImage* che stai utilizzando, per ridimensionarlo.

+0

Interessante, darò un'occhiata, grazie per il link – stefanB

1

Se si ha accesso al centro di Apple Devloper, è disponibile un video sul ridimensionamento delle immagini per le visualizzazioni delle tabelle. È più focalizzato sui problemi di prestazioni e parla molto del threading, ma mostra alcuni esempi di codice usati per ridimensionare le immagini.

nome del video: "Efficace iPhone App per lo sviluppo - Parte 2" circa 30 minuti a

+0

grazie, lo controllerò – stefanB