如何在iOS 7和iOS 8中锁定设备方向

时间:2015-04-30 08:29:08

标签: ios ios7 ios8 orientation

我的应用有问题。我无法锁定我的应用程序的方向。我需要做的就是将一个视图控制器锁定到横向模式,其余的都是纵向。

这是我的应用程序的层次结构。

*Navigation Controller
     *TabBarController
          *ViewControllers

3 个答案:

答案 0 :(得分:0)

您只需要从NO返回shouldAutorotate,从supportedInterfaceOrientation返回横向广告。

另一方面,从NO方法返回shouldAutorotate,纵向方向也从supportedInterfaceOrientation返回。

在所有viewControllers中:

 -(BOOL)shouldAutorotate { 
     return NO; 
 } 

在你想要的风景中:

- (NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskLandscape; 
} 
-    (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationLandscapeLeft; 
} 

在您想要的纵向控制器中:

 - (NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskPortrait; 
} 
-    (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 

答案 1 :(得分:0)

使用以下2方法将设备方向锁定为横向。

- (NSUInteger)supportedInterfaceOrientations{
[super supportedInterfaceOrientations];
return (UIInterfaceOrientationMaskLandscapeLeft |  UIInterfaceOrientationMaskLandscapeRight);
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation==UIInterfaceOrientationLandscapeLeft || interfaceOrientation==UIInterfaceOrientationLandscapeRight)
{
    return YES;
}
// Return YES for supported orientations
return NO;
}

答案 2 :(得分:0)

使用NavigationController

-(BOOL)shouldAutorotate 
-(NSUInteger)supportedInterfaceOrientations
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

如果使用'show segue(push)',则永远不会调用这些方法。

将segue'showDetail'改为'show'