Stufenbild zu passen Bildschirm auf dem iPhone Rotation
-
26-09-2019 - |
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;
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;