2012-04-12 6 views
18

Ich habe eine App, die aus vielen View-Controllern besteht ... In der Projektzusammenfassung habe ich die Hochformatausrichtung als einzige unterstützte Geräteausrichtung festgelegt.Können Sie die Rotation in einer iOS-App global deaktivieren?

Allerdings wird die App immer noch durcheinander gebracht, wenn sie seitwärts gedreht wird.

Meine Frage ist, gibt es eine Möglichkeit, Autorotation global durch App-Delegat oder etwas zu deaktivieren?

Oder muss ich in alle meine View-Controller gehen und die Methode "shouldAutorotateToInterfaceOrientation" hinzufügen?

wollen einfach nicht Zugabe zu einem oder etwas ...

Dank verpassen!

+1

Es ist eine Weile her, seit ich iOS gemacht habe, aber gibt es nicht etwas, das Sie in die App plist legen können? Etwas über "unterstützte Orientierungen" oder etwas ähnliches? –

Antwort

6

in root-View-Controller-Methode:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
// Return YES for supported orientations 
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

set 'return NO';

Dies sollte für alle Ansichten tun.

+4

es funktioniert nicht für mich –

67

Erweitern Sie in Info.plist "Unterstützte Schnittstellenausrichtungen" und entfernen Sie Querformatelemente, damit Ihre Anwendung nur im Hochformat ausgeführt wird.

12

Nachdem ich in UIViewControllers Methoden shouldAutorotate und supportedInterfaceOrientation gekämpft habe, ohne Erfolg in iOS6, fand ich es am effektivsten, es im App-Delegaten zu setzen.

Allerdings zurück UIInterfaceOrientationMaskPortraitUpsideDown stürzte meine App. Ich weiß nicht, was ich falsch gemacht habe!

+2

Das funktioniert auch für iOS 8. Arbeitete perfekt für mich in Kombination mit der unterstützten Einstellung der Schnittstellenausrichtung in der 'Info.plist' Datei der App –

8

Es gibt jetzt drei Arten von Geräteausrichtungstasten im .

  1. Unterstützte Schnittstelle Orientierungen (iPad)
  2. Unterstützte Schnittstelle Orientierungen (iPhone)
  3. Unterstützte Schnittstelle Orientierungen

dritte ist ich für nicht-universelle Anwendungen denken und ruhen zwei oben sind für iPad und iPhone.

Sie sollten sie versuchen.

enter image description here

+0

Danke. Dies ist die einzige Sache, die ich tun musste, um Portrait nur für iPhone und iPad zu erzwingen. –

0

Haris Hussain Antwort erscheint jetzt als veraltet zu sein, wie von IOS 6, aber es gibt neue Methoden zur Begrenzung/eine Drehung.

Hier sind die in der UIViewController Header aufgeführten Methoden:

// New Autorotation support. 
- (BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0); 
- (UIInterfaceOrientationMask)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0); 
// Returns interface orientation masks. 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation NS_AVAILABLE_IOS(6_0); 

Beachten Sie, dass shouldAutoRotate scheint nicht, wenn Sie die App in einem bereits gedreht Zustand beginnen zu arbeiten!

0

Wenn Sie das iPad unterstützen, sollten Sie die Ausrichtung der Landschaft NICHT deaktivieren, da dies verhindert, dass Ihre App von Apple im App Store akzeptiert wird.

Drehen zu verhindern, bevor die App ersten Bildschirm zeigt, setzen Sie diese in Ihrem AppDelegate.m

Diese Methode funktioniert und in iOS 7.1 oben getestet.

// G - fix for ipad. 
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 
Verwandte Themen