【问题标题】:iOS 7 supportedInterfaceOrientation not working as intendediOS 7 supportInterfaceOrientation 未按预期工作
【发布时间】:2014-05-16 18:12:32
【问题描述】:

所以我有一个可以旋转到任何方向的根控制器和一个仅使用supportedInterfaceOrientations 显示横向模式的视图控制器

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

因此,当我通过将窗口的根控制器设置为在应用程序的某个点(例如按下按钮)来呈现该视图控制器时,它会以横向模式启动。每次旋转时,它都会调用该方法。但是当我旋转到纵向时,即使我告诉他们只使用横向,它也会变成纵向。有什么建议吗?

【问题讨论】:

    标签: ios objective-c screen-rotation


    【解决方案1】:

    问题是只咨询最顶层的视图控制器。例如,如果您有一个导航控制器及其根视图控制器,那么只有导航控制器所说的内容才是重要的。 (并且您可以使用导航控制器委托的navigationControllerSupportedInterfaceOrientations: 来给出您想要的答案。)

    【讨论】:

    • 试过了,效果很好。但是,如果我弹出控制器,状态栏会认为它仍处于横向模式,并且如果我推送到支持所有方向并以纵向启动的新视图控制器,它会以横向启动。知道如何解决这个问题吗?
    • @PaoloPascua 你不能。在 iOS 7 中 Push/pop 不会改变方向。
    • 但使用此方法会影响后续视图控制器。对我来说,我有点做了 self.navigationController.delegate = self on 出现并在dismiss时恢复原始委托
    • 我的意思是,你可以表达你对如果用户旋转设备会发生什么的偏好,但你不能强制 app在推送/弹出期间与设备的当前方向相反地旋转。只有出席/解雇才能做到这一点。
    • 叹息。假设我使用这种方法强制我的视图控制器进入横向模式。成功了。现在我想通过 push/pop 转到不同的视图控制器。我希望以纵向启动的下一个控制器最终以横向模式启动,这是我不想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 2012-11-14
    相关资源
    最近更新 更多