Domanda

ho un UIScrollView contenente un UIImageView e ho qualche difficoltà per ottenere il comportamento corretto quando la rotazione iPhone.

Obiettivo: Sto cercando di ottenere la seguente quando si passa da verticale a orizzontale:

_________
|AAAAAAA|
|BBBBBBB|         _________________
|CCCCCCC|         |     AAAAAA     |
|DDDDDDD|    -->  |     CCCCCC     |
|EEEEEEE|         |     EEEEEE     |
|FFFFFFF|         |_____GGGGGG_____|
|GGGGGGG|
---------

Ecco l'intera immagine nella vista ritratto è adattato nella vista paesaggio durante la rotazione iPhone. E 'anche centrato. Sto anche cercando di mantenere le proporzioni. L'interazione dell'utente è anche, e l'utente dovrebbe essere in grado di utilizzare l'intero schermo di pan / ingrandire l'immagine.

Al momento ho il seguente autoresizingMask sul ScrollView:

 scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth |
                               UIViewAutoresizingFlexibleHeight);       

Ma questo ha pronunciato la seguente

_________
|AAAAAAA|
|BBBBBBB|         _________________
|CCCCCCC|         |AAAAAA          |
|DDDDDDD|    -->  [BBBBBB          |
|EEEEEEE|         [CCCCCC          |
|FFFFFFF|         [DDDDDD__________|
|GGGGGGG|
---------

Questa scala conserve impostazione e l'offset dall'angolo in alto a sinistra.

Domanda: E 'possibile ottenere questo comportamento utilizzando autoresizingMask adatto? In caso contrario, si dovrebbe probabilmente set

 scrollView.autoresizingMask = UIViewAutoresizingNone;

e manualmente zoomScale set e contentOffset per UIScrollView a rotazione. Ma, dove dovrebbe che essere fatto? Che dire di animazione che il cambiamento?

Soluzione: Con molto modificando leggermente la risposta qui sotto ho ottenuto il comportamento sopra utilizzando il sottostante Codice:

imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                                     UIViewAutoresizingFlexibleHeight);

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth 
                                     | UIViewAutoresizingFlexibleHeight);

imageView.contentMode = UIViewContentModeScaleAspectFit;
scrollView.contentMode = UIViewContentModeCenter;
È stato utile?

Soluzione

Prova questo:

scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                           UIViewAutoresizingFlexibleHeight);    
imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                           UIViewAutoresizingFlexibleHeight);

imageView.contentMode = UIViewContentModeAspectFit; // You could also try UIViewContentModeCenter

Non sono sicuro se l'ImageView otterrà automaticamente ridimensionata all'interno di un UIScrollView, quindi se il ridimensionamento automatico non funziona, si potrebbe provare a impostare il frame da soli su di rotazione per eguagliare le dimensioni del ScrollView.

Altri suggerimenti

ho avuto una situazione simile, molto semplice ScrollView con 3 imageViews ( 'precedente', 'corrente', e 'vicino') per visualizzare una serie di foto.

Le foto sono state tutte dimensionati per l'iPad, ma un mix di paesaggio e ritratto gli orientamenti. Volevo loro di adattarsi allo schermo, (cioè letterboxed se necessario), con rapporto di aspetto mantenuto. Ho trovato Ho solo bisogno di fare questo per i 3 imageViews per farlo funzionare:

imageView.contentMode = UIViewContentModeScaleAspectFit;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top