在iOS8之前,我们结合使用下面的代码和supportedInterfaceOrientations和shouldAutoRotate委托方法来强制应用程序定位到任何特定方向.我使用下面的代码片段以编程方式将应用程序旋转到所需的方向.首先,我正在更改状态栏的方向.然后,只需显示并立即取消模式视图,即可将视图旋转到所需的方向.
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
但这在iOS8中失败了.另外,我在堆栈溢出中看到了一些答案,人们建议我们从iOS8开始应该始终避免使用这种方法.
更具体地说,我的应用程序是一种通用类型的应用程序.总共有三个控制器.
First View controller-它应该支持iPad中的所有方向,而iPhone中只支持纵向(按下主页按钮).
Second View controller-它在任何情况下都应该只支持横向权限
Third View controller-在所有条件下,它只支持景观
我们正在使用导航控制器进行页面导航.在第一个视图控制器上,点击一个按钮,我们在堆栈上按下第二个.因此,当第二个视图控制器到达时,无论设备方向如何,应用程序都应该只锁定在右侧.
下面是我在第二个和第三个视图控制器中的shouldAutorotate
和supportedInterfaceOrientations
方法.
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(BOOL)shouldAutorotate {
return NO;
}
有没有什么更好的方法来锁定iOS8的特定方向的视图控制器.请帮帮忙!!