2010-07-05 15 views
16

Ho un'immagine che vorrei da visualizzare in una UITableViewCell utilizzando lo stile UITableViewCellStyleSubtitle che fornisce un UIImageView, e due righe di testo, oltre a una vista accessorio opzionale.iOS SDK UIViewContentModeScaleAspectFit vs. UIViewContentModeScaleAspectFill

Tuttavia, quando si imposta la modalità di contenuto di UIImageView su uno dei valori UIViewContentModeScaleAspectFit o UIViewContentModeScaleAspectFill, sembra che non faccia alcuna differenza. Entrambe queste modalità di contenuto mostrano semplicemente l'intera immagine, spostando il testo verso destra per creare spazio per l'immagine.

Qualcuno ha qualche esempio di come questi in realtà differiscono nella pratica? I documenti dicono:

UIViewContentModeScaleAspectFit: 
Scales the content to fit the size of the view by maintaining the aspect ratio. Any  remaining area of the view’s bounds is transparent. 

UIViewContentModeScaleAspectFill: 
Scales the content to fill the size of the view. Some portion of the content may be clipped to fill the view’s bounds. 

Ma queste modalità di contenuto non sembrano comportarsi come pubblicizzato.

EDIT: Io corro SDK iOS 4.

+0

L'unica cosa che posso pensare è che forse UITableViewCell con UITableViewCellStyleSubtitle sovrascrive queste modalità di contenuto per ridimensionare automaticamente la vista dell'immagine alla dimensione dell'immagine che si sta inserendo. Questo ha un senso dai risultati ottenuti attraverso la pratica. – Dalmazio

+0

In generale, ho scoperto che quando UIKit genera automaticamente la visualizzazione di una vista, sembra che assuma solo i parametri e li utilizza come linee guida. Invece, passa attraverso qualche strano codice proprietario e a volte può darti un output strano. A volte è più semplice fare a meno dei valori predefiniti che ti danno e creare UITableViewCell da zero. –

risposta

9

La ragione per cui non si vede la differenza tra queste due modalità è che UITableViewCell ridimensiona automaticamente la visualizzazione dell'immagine per adattarla alle proporzioni dell'immagine. Le modalità di contenuto entrano in gioco solo quando lo aspect ratio della vista è diverso da quello dell'immagine.

Sostituisci layoutSubviews nella tua classe personalizzata UITableViewCell o crea tu stesso un'immagine (non utilizzare quello fornito dalla cella di visualizzazione tabella).

+0

+1: In realtà non risponde alla domanda titolare, ma ho trovato questo su Google e mi ha aiutato! Ho creato una sottoclasse di 'UITableViewCell' che aveva un' UIImageView' che ho chiamato, naturalmente, 'imageView'. Stava saltando in giro e non riuscivo a capire perché. La semplice ridenominazione ha reso il metodo sottostante 'UITableViewCell'' layoutSubviews' che ha smesso di spostare la mia immagine. – ArtOfWarfare

35

Ho avuto lo stesso problema. Sembra che la documentazione di Apple sia un po 'carente.

Ho trovato la risposta cercando su Internet. http://www.iphonedevsdk.com/forum/iphone-sdk-development/2973-crop-image.html

In sostanza,

img1.contentMode = UIViewContentModeScaleAspectFill; 
img1.clipsToBounds = YES; 

Se si vuole che sia un po 'più di fantasia, controllare questo post: UIImageView change Width and Height

+3

Questo non funziona per una cella tableview. – Ryan

+3

Tre dannate ore più tardi, 'clipsToBounds' era esattamente quello che stavo cercando. Grazie. –