supportedInterfaceOrientations nicht funktioniert
Möchte ich einige meiner ViewControllers Landschaft und einige Porträt-also das ist, was ich getan habe:
Habe ich aktiviert landscape-Modus:
Als Nächstes fügte ich diese Zeilen von code im view-Controller ich wollte Porträt:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}
-(BOOL)shouldAutorotate
{
return NO;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
Allerdings, wenn ich drehen Sie Sie gehen noch zur landscape-Modus.Wie kann ich das beheben?
- vermutlich haben Sie diese Methoden in Ihrem viewControllers, die geschoben in UINavigationController, richtig ?
- Ja
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie ich es mache.
Machen Sie einen UINavigationController übergeordneten Klasse.
im inneren UINavigationController (Eltern) diese Methoden überschreiben, wie:
Nun Ihre NavigationController sollte eine Unterklasse der UINavigationContorller Eltern
Swift 3:
In Ihrem UINavigationController Unterklasse tun
Update
Aufgenommen von Matt ' s Antwort, wenn Sie nicht wollen, um Unterklasse:
Erstens: machen Sie Ihren viewController Delegierter der navigationController in
viewDidLoad
Dann erklären UIViewController-Erweiterung zu reagieren, um die delegate-Methode wie unten dargestellt:
Apple entwickelt, Weg, dies zu tun für
UINavigationController
ist überUINavigationControllerDelegate
.In der Regel ich nur aktualisieren Sie diese delegieren, um Folgendes zu tun und delegieren Sie es an die Spitze der Anzeige-controller in der navigation-controller-stack:
Meiner Meinung nach die
UINavigationController
sollte einfach standardmäßig auf die oben beschriebenen Verhalten, aber dies ist die api von Apple zur Verfügung gestellt hat 🙂Für die info-plist-Datei, die ich deaktivieren Sie alle Optionen und Sie alle behandeln, die im code, wie es verursacht Probleme für mich in der Vergangenheit und ich wurde müde Umgang mit Ihr.
Nur für Sie alle Informationen
erstellen Sie ein neues Projekt single view-basierte Anwendung,
umzusetzen sollte das automatische drehen zu delegieren und die supportedInterface Orientierung im viewController
Haltepunkt hinzufügen in es.
Run (universal-Modus)
So vergeuden Sie nicht zu Brei zu Zeit auf, wie ich juste Hat, XCode 7.3 VERBUGGT ist
Sehen Sie die Antwort im folgenden Beitrag:
iOS 6 Rotationen: supportedInterfaceOrientations nicht funktioniert?
Lassen Sie mich wissen, ob es dein problem.
Wenn unter UINavigationController, ich bin der Umsetzung der UINavigationControllerDelegate und die folgende Methode:
Für Einfachheit, für iPad, wenn Unterstützt Ausrichtungen (iPad) Eigenschaft in der info.plist enthält alle vier Ausrichtungen, mit UIRequiresFullScreen Eigenschaft Wert als KEINE, iOS behandeln Ihre app unterstützt-split-Ansicht. Wenn eine app unterstützt-split-Ansicht-Funktion können Sie nicht deaktivieren Sie es drehen können, zumindest von den Möglichkeiten oben.
Lassen Sie uns gehen tief ins Detail.
Zuerst müssen wir wissen, welche Faktoren beeinflussen die Bildschirm Ausrichtung:
1. Projekt-Einstellungen(info.plist)
Gibt es zwei Orte, die wir tun können, diese Einstellung:
Projekt->Ziel->allgemein->Geräte-Orientierung
info.plist des Projektes
Den beiden Methoden sind die gleichen und man wird automatisch synchronisieren Sie die andere Einstellung.
In info.plist-Datei, Unterstützt Ausrichtungen (iPad) Eigenschaft ist für iPad-Einstellung (wählen Sie iPad für Gerät Abschnitt), und Unterstützten Ausrichtungen Eigenschaft ist für iPhone und Universal (wählen Sie iPhone oder Universal für Gerät Abschnitt, und diese beiden Einstellungen wird immer das gleiche sein.).
2. Set unterstützt Bildschirm-Orientierungen, die programmgesteuert
Es gibt zwei Möglichkeiten zum konfigurieren der unterstützten Ausrichtungen während der Codierung:
supportedInterfaceOrientationsForWindow:
Methode inUIApplicationDelegate
supportedInterfaceOrientations
Methode inUIViewController
Dem iOS-system überprüft, ob die gemeinsamen Orientierungen in den beiden Methoden, und verwenden Sie die gemeinsame Ausrichtung als die unterstützten Ausrichtungen für die view-controller.
3. Set
shouldAutorotate
Eigenschaft inUIViewController
Dies ist ein nur-Lesen-Eigenschaft und zur Regelung verwendet werden, wenn der view-controller drehbar ist oder nicht. Sie können Sie überschreiben die Eigenschaft, die in Ihrer view-controller, oder sogar ändern Sie die Eigenschaft zu Lesen-schreiben-Eigenschaft, so dass Sie können ändern Sie die Eigenschaft, während Ihre app ausgeführt wird. Zum Beispiel:
shouldAutorotateVariable
ist eine private Eigenschaft in der view-controller.iPhone
Wenn ein view-controller ist
shouldAutorotate
Eigenschaftfalse
wird iOS weglassen die folgenden Einstellungen:supportedInterfaceOrientationsForWindow:
Methode inUIApplicationDelegate
supportedInterfaceOrientations
Methode inUIViewController
iOS wird nur Projekt-Einstellungen (info).plist).
Wenn die
shouldAutorotate
Eigenschaft nicht überschrieben oder mittrue
, dann iOS verwenden Sie die Allgemeinen Orientierungen die folgenden zwei Methoden:supportedInterfaceOrientationsForWindow:
Methode inUIApplicationDelegate
supportedInterfaceOrientations
Methode inUIViewController
Wenn die beiden oben genannten Methoden sind nicht geliefert wird iOS verwenden Sie den Projekt-Einstellungen (info).plist).
iPad
Ab iOS9, iPad unterstützt-split-Ansicht Funktion. Finden Sie Dia-Over-und Split-View Quick Start für die Einstellung des split-Ansicht.
Einfachheit halber, wenn Unterstützt Ausrichtungen (iPad) Eigenschaft in der info.plist enthält alle vier Ausrichtungen, mit UIRequiresFullScreen Eigenschaft Wert als KEINE, iOS behandeln Ihre app unterstützt-split-Ansicht. Wenn die von der app unterstützt-split-Ansicht, die beiden folgenden Einstellungen werden weggelassen:
supportedInterfaceOrientationsForWindow:
Methode inUIApplicationDelegate
supportedInterfaceOrientations
Methode inUIViewController
Den
shouldAutorotate
Eigenschaft inUIViewController
auch weggelassen werden.Ist zu sagen, wenn eine app unterstützt-split-Ansicht-Funktion können Sie nicht deaktivieren Sie es drehen können, zumindest von den Möglichkeiten oben.
Wenn Unterstützt Ausrichtungen (iPad) Eigenschaft in der info.plist-Wert enthält nicht alle vier Ausrichtungen, oder UIRequiresFullScreen Eigenschaft JA, die app wird nicht unterstützt-split-Ansicht, und die Bildschirm-Orientierung Kontroll-Logik ist die gleiche, mit iPhone über.
Im Fall oben genannte Lösung nicht funktioniert, dann im Fall, wenn Sie mit
UITabBarController
dann müssen Sie UnterklasseUITabBarController
und überschreiben müssen folgende MethodenIch schlage vor, Sie verwenden
.all
füriPad
hier verlängertHoffe hilfreich jemand vor dem gleichen Problem