2012-02-25 19 views
5

ho avuto a che fare con questo problema, lavorando attorno ad esso per un bel po 'di tempo, ma mi piacerebbe sapere il modo corretto di gestire la situazione:UIImages creati da NSData non onorare UIViewContentMode

Se ricevo un'immagine come NSData da CoreData in questo modo:

NSData *myImageData = myEntity.Image; 
cell.imageView.image = [UIImage imageWithData:myImageData]; 
[cell.imageView setContentMode:UIViewContentModeScaleAspectFit]; 

Se l'immagine è più grande CGRect del UIImageView, l'immagine non si vincola alla CGRect del UIImageView.

Quello che ho attualmente fare per risolvere il problema utilizzando il codice che è qualcosa di simile:

CGSize size = CGSizeMake(98, 98); 
UIGraphicsBeginImageContext(size); 
[image drawInRect:CGRectMake(0, 0, size.width, size.height)]; 
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

cell.imageView.image = scaledImage; 

che funziona, ma mi farebbe piacere che qualcuno mi dica cosa sto facendo male con l'approccio ContentMode come dovrebbe funzionare.

Grazie per aver trovato il tempo di leggere la mia domanda.

+0

Non sono sicuro se questo ha un impatto sullo scenario, ma sto cercando di farlo da un UITableViewCell –

+0

Hai risolto? –

risposta

0

È necessario chiamare [cell.imageView setNeedsDisplay] dopo aver impostato la modalità contenuto o spostare la chiamata su setContentMode prima di impostare il valore cell.imageView.image.

+1

Ho provato entrambi quelli ... senza fortuna. –

+1

Quindi ho il sospetto che ci sia qualcosa di più in corso con il tuo codice di quello che hai postato, cioè, è un problema più ampio. Potresti provare a postare altro codice. – kamprath

+0

Apprezzo il feedback. Ho scritto un esempio indipendente per provare a ricreare il problema. Ho trovato che il problema potrebbe essere correlato all'immagine stessa. Sto ancora lavorando per ricreare il problema, ma sembra che l'immagine funzioni in alcuni casi e non in altri. –