Was ist die "richtige" Art und Weise zu handhaben Orientierung änderungen in iOS 8?
Kann mir bitte jemand sagen, der "richtigen" oder "besten" - Ansatz auf die Zusammenarbeit mit hoch-und Querformat Ausrichtungen, die in iOS 8? Es scheint, dass alle Funktionen, die ich verwenden möchten, für diesen Zweck sind deprecated in iOS 8, und meine Forschung hat sich keine klare, elegante alternative. Bin ich wirklich sollte Blick auf die Breite und Höhe zu bestimmen, selbst wenn wir im portrait-oder landscape-Modus?
Zum Beispiel in meinem view-controller, wie soll ich das implementieren der folgende pseudocode?
if we are rotating from portrait to landscape then
do portrait things
else if we are rotating from landscape to portrait then
do landscape things
InformationsquelleAutor der Frage rmp251 | 2014-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Apple empfiehlt die Verwendung von Größenklassen als grobes Maß dafür, wie viel Platz auf dem Bildschirm verfügbar, so dass Sie Ihre Benutzeroberfläche können erheblich verändern das layout und die Darstellung. Bedenken Sie, dass ein iPad im hochformat hat die gleichen Größenklassen wie in der Landschaft (Regelmäßige Breite, Regelmäßige Höhe). Dies bedeutet, dass Ihre Benutzeroberfläche sollte mehr oder weniger ähnlich zwischen den beiden Orientierungen.
Jedoch der Wechsel von hochformat zu Querformat in einem iPad ist groß genug, dass Sie möglicherweise benötigen, um einige kleinere Anpassungen an der Benutzeroberfläche, auch wenn die Größe der Klassen nicht geändert haben. Da die interface-Orientierung bezogene Methoden auf
UIViewController
sind veraltet, der Apple nun empfiehlt die Implementierung der folgenden neuen Methode inUIViewController
als Ersatz:Toll! Jetzt bist du immer Rückrufe direkt vor der Drehung beginnt, und nachdem es beendet ist. Aber was ist eigentlich, zu wissen, ob die Drehung auf hochformat oder Querformat?
Apple empfiehlt, darüber nachzudenken rotation einfach als eine änderung in der Größe der übergeordneten Ansicht. In anderen Worten, während ein iPad rotation von hochformat auf Querformat, können Sie denken, dass es der root-Ebene anzeigen einfach durch änderung seiner
bounds.size
aus{768, 1024}
zu{1024, 768}
. Wissen diese dann, sollten Sie diesize
ging in dieviewWillTransitionToSize:withTransitionCoordinator:
Methode vor, um herauszufinden, ob Sie drehen auf hochformat oder Querformat.Wenn Sie möchten, eine noch mehr nahtlose Möglichkeit für die Migration von legacy-code auf die neue iOS 8-Wege, Dinge zu tun, erwägen Sie die Verwendung diese einfache Kategorie auf UIView, die verwendet werden können, um zu bestimmen, ob eine Ansicht ist "portrait" oder "Landschaft" basiert auf seiner Größe.
Zur Erinnerung:
viewWillTransitionToSize:withTransitionCoordinator:
Rückruf in UIViewController.statusBarOrientation
-- das ist im Grunde eine device-level-Eigenschaft-zu bestimmen, ob das layout eine Ansicht, für "Porträt" vs "Landschaft". Die Statusleiste Orientierung sollte nur verwendet werden, durch den code, um Dinge wieUIWindow
die eigentlich live an der Wurzel Ebene der app.InformationsquelleAutor der Antwort smileyborg
Basierend auf smileyborg ist sehr gut detailliert (und akzeptiert) Antwort, hier ist eine Anpassung mittels swift-3:
Und in der
UICollectionViewDelegateFlowLayout
Umsetzung,InformationsquelleAutor der Antwort CMont
Ich einfach verwenden notification Center:
Fügen Sie eine variable Ausrichtung (wird erklären am Ende)
Hinzufügen Benachrichtigung, wenn die Ansicht angezeigt wird
Entfernen Benachrichtigung, wenn Sicht geht Weg
Ruft die aktuelle Ausrichtung, wenn die Benachrichtigung ausgelöst wird
Überprüft die Ausrichtung (hochformat/Querformat) und die Griffe Veranstaltungen
Dem Grund füge ich eine Orientierungs-variable ist, da beim testen auf einem physischen Gerät, die Orientierung Benachrichtigung aufgerufen wird, bei jeder kleinen Bewegung in das Gerät, und nicht nur, wenn es sich dreht. Hinzufügen var und if-Anweisungen nur ruft der code, wenn es eingeschaltet, um die entgegengesetzte Orientierung.
InformationsquelleAutor der Antwort inVINCEable
Aus UI-Perspektive, ich glaube, dass die Verwendung von Größenklassen von Apple empfohlene Vorgehensweise für die Handhabung von Schnittstellen in unterschiedlichen Lagen, Größen und Skalen.
Siehe Abschnitt: Merkmale Beschreiben die Größe Klasse und das Ausmaß der Schnittstelle hier:
https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html
Dies ist ein guter Artikel:
https://carpeaqua.com/thinking-in-terms-of-ios-8-size-classes/
BEARBEITEN
Aktualisiert Link:
https://carpeaqua.com/2014/06/14/thinking-in-terms-of-ios-8-size-classes/ (Credit: Koen)
InformationsquelleAutor der Antwort Aaron