2017-07-18 2 views
3

Ich arbeite an iPad-Anwendung, die nur Querformat unterstützt, möchte ich einige präsentierten View-Controller zu ermöglichen, alle Ausrichtung zu unterstützen, ohne die Ausrichtung der Präsentation Controller zu ändern. Ich unterstütze alle Orientierung in Xcode-Einstellungen außer auf dem Kopf.Drehen Sie die angezeigte Ansicht und sperren Sie die Ausrichtung der präsentierenden Ansicht Controller

-Code Ich bin mit View-Controller

ViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"VC"]; 
    vc.modalPresentationStyle = UIModalPresentationFormSheet; 
    [self presentViewController:vc animated:YES completion:nil]; 

-Code Ich bin mit zu ermöglichen Orientierung präsentiert View-Controller präsentieren:

- (UIInterfaceOrientationMask)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskAll; 
} 

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

You tube App bietet gleiche Art von Funktion, während der Videowiedergabe, irgendeine Idee, wie es funktioniert?

Jede Hilfe wird zu schätzen wissen, danke.

Antwort

0

AppDelegate.m

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 

if(_isAllModes) 
    return UIInterfaceOrientationMaskAll; 
else 
    return UIInterfaceOrientationMaskPortrait; 
} 

Ihre Viewcontroller. Rotation:

[(AppDelegate*)([UIApplication sharedApplication].delegate) setIsAllModes:YES]; 
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait]; 
[[UIDevice currentDevice] setValue:value forKey:@"orientation"]; 
0

Ich hatte ein ähnliches Problem, aber Projekteinstellungen überschreiben einzelne ViewController-Einstellungen, die Sie programmgesteuert angewendet haben. Was ich tat, das Problem zu lösen, wurde die einzige min akzeptable Orientierung in Projekteinstellungen zu verlassen und es in AppDelegate.m wie ich unterhalb

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window //newUX 
{ 
    return UIInterfaceOrientationMaskAll; 
} 

Sie es trotzdem besser machen können, zum Beispiel, wenn Sie alle Orientierungen aktivieren mögen nur in einem bestimmten Szenario, nur sagen, wenn im letzten Viewcontroller in Stapel der „all“ -on ist, wie unten

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window //newUX 
{ 
    if([self.navController.viewControllers.lastObject isKindOfClass:[MyAllOrientationVC class]])//newUX 
     return UIInterfaceOrientationMaskAll; 
    else 
     return UIInterfaceOrientationMaskPortrait|UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskLandscapeRight; 
} 
+1

ich bin nicht Navigation Controller auch wenn ich Orientierung am Wechsel ist es sowohl view-Controller-Ausrichtung ändern, i will nur ** vorgestellt View Controller ** Orientierungsänderung nicht ** präsentiert View Controller ** (wie ich präsentiere View Controller durch Einstellung präsentiert Stil ** Formularblatt **, damit beide Ansichtscontroller sichtbar sind) – user2493047

Verwandte Themen