相关疑难解决方法(0)

如何在iOS 8中强制查看控制器方向?

在iOS 8之前,我们将下面的代码与supportedInterfaceOrientationsshouldAutoRotate委托方法结合使用,以强制应用程序方向指向任何特定方向.我使用下面的代码段以编程方式将应用程序旋转到所需的方向.首先,我正在改变状态栏方向.然后只显示并立即关闭模态视图会将视图旋转到所需的方向.

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
Run Code Online (Sandbox Code Playgroud)

但这在iOS 8中失败了.而且,我已经看到堆栈溢出的一些答案,人们建议我们应该始终从iOS 8开始避免这种方法.

更具体地说,我的应用程序是一种通用类型的应用程序.总共有三个控制器.

  1. First View控制器 - 它应该支持iPad中的所有方向,并且只支持iPhone中的纵向(主页按钮).

  2. 第二视图控制器 - 它应该只支持所有条件下的横向

  3. 第三视图控制器 - 它应该只支持所有条件下的风景

我们使用导航控制器进行页面导航.从第一个视图控制器,在按钮单击操作上,我们在堆栈上推送第二个.因此,当第二个视图控制器到达时,无论设备方向如何,应用程序都应仅锁定横向.

下面是我shouldAutorotatesupportedInterfaceOrientations第二和第三视图控制器中的方法.

-(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscapeRight;
}

-(BOOL)shouldAutorotate {
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

对于这种或任何更好的方法来锁定iOS 8的特定方向的视图控制器是否有任何解决方案.请帮忙!!

objective-c uinavigationcontroller autorotate ios ios8

144
推荐指数
10
解决办法
14万
查看次数

解雇模态视图控制器时如何保持显示视图控制器的方向?

我有这个应用程序,我正在努力,我需要所有的视图控制器,但一个是肖像.单一的视图控制器是特殊的我需要它能够旋转到手机的任何方向.

为此,我以模态方式呈现它(未嵌入NavigationController中)

所以(例如)我的结构是这样的:

  • 窗口 - 肖像
    • 根视图控制器(UINavigationController - Portrait)
      • 主视图控制器(UIViewController - Portrait)
        • 详细信息视图控制器(UIViewController - Portrait)
        • .
        • .
        • .
        • 模态视图控制器(UIVIewController - 全部)

现在,当我在横向位置解除模态视图控制器时,我的父视图控制器也会旋转,即使它不支持该方向.

应用程序中的所有UIViewControllersUINavigaionControllers继承自实现这些方法的相同通用类:

override func supportedInterfaceOrientations() -> Int
{
    return Int(UIInterfaceOrientationMask.Portrait.toRaw())
}
Run Code Online (Sandbox Code Playgroud)

我的模态视图控制器再次覆盖此方法,它看起来像这样:

override func supportedInterfaceOrientations() -> Int
{
    return Int(UIInterfaceOrientationMask.All.toRaw())
}
Run Code Online (Sandbox Code Playgroud)

更新1

看起来这只发生在iOS8 Beta上.有人知道视图控制器的轮换是否有变化,或者这只是测试版中的错误?

iphone uiviewcontroller screen-rotation ios swift

32
推荐指数
3
解决办法
2万
查看次数