2014-01-22 3 views
5

Erstmaliger Entwickler und habe gerade die Zertifikate eingerichtet, um meine Anwendung auf einem iOS-Gerät ausführen zu können.Landschaftsausrichtung für iOS 7-Anwendung deaktivieren?

Meine Anwendung wird nicht gut im Querformatmodus angezeigt, auch nicht bei der automatischen Layouteinstellung. Wie kann ich den Benutzer daran hindern, die App im Querformat anzuzeigen, wenn sie das Gerät einschalten? d. h. es ist immer ein Porträt, unabhängig von der Ausrichtung des Geräts? danke

EDIT: Rät Apple auch davon ab, dies während der Einreichung zu tun?

Antwort

18

Wie Siavash sagte, ist der Registerkarte Allgemein im Ziel der beste Ort, um die Orientierungen für die gesamte Vorrichtung zu begrenzen. Device orientations

Wenn Sie alle Ausrichtungen möglich einstellen wollte, aber es für bestimmte View-Controller zu begrenzen, können Sie etwas tun könnte:

- (BOOL) shouldAutorotate 
{ 
    return NO; 
} 

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
    return NO; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    if (condition) 
    { 
     return UIInterfaceOrientationPortrait; 
    }else{ 
     return UIInterfaceOrientationLandscapeLeft; 
    } 
} 

Um Ihre zweite Frage zu beantworten, bietet Apple keine App Kritik basiert auf seine möglichen Orientierungen. Es liegt mehr an Ihnen, zu entscheiden, welche Ausrichtung (en) für Ihre App am besten geeignet ist/sind. Für iPhone Apps bevorzugen Benutzer zum Beispiel normalerweise Portrait (es sei denn, es handelt sich um ein Spiel!).

+0

Vielen Dank für die detaillierte Antwort Natty! Nur um den obigen Code zu bestätigen sollte in die ViewDidLoad jedes einzelnen Controllers ja gehen? – Cescy

+0

Mein Vergnügen! Die oben genannten Funktionen sind unabhängig.Ich glaube, sie können überall in Ihrem .m zu jedem View Controller hinzugefügt werden, der - im Wesentlichen - "weiß, was zu tun ist". Probieren Sie es aus! – Nathaniel

+0

@Nathaniel funktioniert nicht für ipad in swift –

1

Der einfachste Weg dies zu tun (kein Code erforderlich) ist in der Datei info.plist Ihrer App zu suchen, suchen Sie nach einem Eintrag namens "Supported interface orientations" (Key = "UISupportedInterfaceOrientations"), klicken Sie auf das Dreieck Zeigen Sie die Liste der unterstützten Orientierungen an, und löschen Sie beide Querformatausrichtungen.

Das wird verhindern, dass Ihre gesamte App in die Landschaft wechselt.

Wenn Sie möchten, dass einige View-Controller verschiedene Ausrichtungen unterstützen, dann ist die Methode support_interfaceOrientations (neu in iOS 6) der richtige Weg. Der Code des anderen Posters mit shootAutorotateToInterfaceOrientation ist für iOS 5.x und älter.

+0

Ich hatte das gleiche Problem und während die obigen Antworten mir nicht geholfen haben, tat dies. Nach allem, was ich herausgefunden habe, gibt es zwei Optionen in der Registerkarte Allgemein (die oben genannten Antworten vorgeschlagen - das iPhone und das iPad (mit blauer Farbe in @Nathaniel Screenshots). So können Sie entweder mit Ihrem Weg gehen oder mit den anderen nur daran erinnern, zu überprüfen die Checkboxen für iPhone UND für iPad – arniotaki

8

Der einfachste Weg ist es, zu Ihrer Projektdatei zu gehen und unter dem Infobereich Deployment die Ausrichtung zu prüfen, die Sie für jedes Gerät haben möchten.

Edit: Hier ist das Bild für Ihre Referenz:

image