Frage

Ich habe eine UIScrollView eine UIImageView enthält, und ich habe einige Probleme, das richtige Verhalten, wenn das iPhone dreht zu bekommen.

Ziel: Ich versuche, das folgende zu erhalten, wenn von Hoch- auf Querformat gehen:

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

Hier wird das gesamte Bild im Hochformat skaliert wird in der Landschaftsansicht, wenn das iPhone dreht passen. Es ist auch zentriert. Ich versuche auch das Seitenverhältnis zu erhalten. Benutzerinteraktion ist auch auf, und der Benutzer sollte den gesamten Bildschirm nutzen können das Bild zu verschieben / zoomen.

Zur Zeit habe ich folgendes autoresizingMask auf dem Scrollview:

 scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth |
                               UIViewAutoresizingFlexibleHeight);       

Aber das ergibt die folgende

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

Diese Einstellung bewahrt Maßstab und von der oberen linken Ecke gegenüber.

Frage: Ist es möglich, dieses Verhalten mit geeigneten autoresizingMask zu erhalten? Wenn nicht, sollte man wohl gesetzt

 scrollView.autoresizingMask = UIViewAutoresizingNone;

und manuell eingestellten zoomScale und contentOffset für die UIScrollView auf Rotation. Aber wo soll das geschehen? Was über diese Änderung Animieren?

Lösung: Durch die sehr leicht Modifizieren der Antwort unten ich das obige Verhalten bekam mit die folgenden Code:

imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                                     UIViewAutoresizingFlexibleHeight);

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth 
                                     | UIViewAutoresizingFlexibleHeight);

imageView.contentMode = UIViewContentModeScaleAspectFit;
scrollView.contentMode = UIViewContentModeCenter;
War es hilfreich?

Lösung

Versuchen Sie diese:

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

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

Ich bin mir nicht sicher, ob der Imageview wird automatisch innerhalb eines UIScrollView Größe verändert bekommen, so dass, wenn die automatischen Größen nicht funktioniert, kann man versuchen, den Rahmen selbst zu drehen Einstellen die Größe des Scroll zu entsprechen.

Andere Tipps

Ich hatte eine ähnliche Situation, eine sehr einfache Scrollview mit 3 imageViews ( ‚zurück‘, ‚Strom‘ und ‚next‘) eine Reihe von Fotos anzuzeigen.

Die Fotos wurden alle für die iPad Größe, sondern eine Mischung aus Landschafts- und Porträtorientierungen. Ich wollte, dass sie in den Bildschirm passen, (d Letterbox falls erforderlich) mit einem Seitenverhältnis beibehalten. Ich fand ich nur notwendig, um dies zu dem 3 imageViews zu tun, damit es funktioniert:

imageView.contentMode = UIViewContentModeScaleAspectFit;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top