Scala l'immagine a schermo in forma a rotazione iPhone
-
26-09-2019 - |
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;
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;