【问题标题】:Force a UIViewController just landscape in iOS 9在 iOS 9 中强制 UIViewController 为横向
【发布时间】:2016-02-21 08:58:27
【问题描述】:

我有一个应用支持纵向和横向。但在视图控制器中,我只希望它以横向模式呈现。我尝试覆盖一些改变方向的方法,例如

- (BOOL)shouldAutorotate {
    return NO;
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return (UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight);
}

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

但是在 iOS 9 中它们都没有被调用。因此,这个视图控制器同时呈现纵向和横向。相反,它在 iOS 8 中完美运行。

太烦人了,有没有办法强制在 iOS 9 中以横向模式显示视图控制器

更新: 正如 Ronak Chaniyara 的回答,我解决了我的问题,只有一个控制器处于横向模式。 现在我面临另一个问题。如果我想强制一个控制器处于纵向模式,我会在控制器中实现这些方法,但如果我旋转屏幕,它仍然会旋转。

解决方案是否仍然适用于纵向模式,或者我必须找到另一种方法来强制控制器处于纵向模式

【问题讨论】:

    标签: ios uiviewcontroller orientation landscape-portrait


    【解决方案1】:

    我认为问题在于您在 info.plist 中定义了允许的方向,这显然会覆盖您在整个项目中其他任何地方所做的任何事情。

    为了纠正这个问题,我从info.plist 中删除了条目并在项目设置中定义了它们。现在一切正常。

    希望这会有所帮助。

    【讨论】:

    • 它就像一个魅力。我删除了 info.plist 中的所有支持方向,然后在每个视图控制器上覆盖这些方法。
    • 对我不起作用。但我觉得奇怪的是,上述所有函数都从未被调用......
    【解决方案2】:

    查看您的 info.plist 文件。这里有一个名为“Supported Interface Orientation”的键,其中一个组用于 iPhone 版本,另一个用于 iPad。

    这里你可以删除“Portrait (home button底部)”的值,将其替换为“Landscape (left home button)”或“Landscape (right home button)”。

    希望对你有帮助!

    【讨论】:

    • 您的解决方案对我帮助很大。我删除 info.plist 中的所有支持方向,然后在每个视图控制器上覆盖这些方法
    【解决方案3】:

    这样,你可以这样做:

    1. 进入目标设置
    2. 转到开发信息
    3. 将设备方向更改为横向并取消选中所有其他选项。

    希望对你有帮助

    【讨论】:

    • 您的解决方案对我帮助很大。我删除 info.plist 中的所有支持方向,然后在每个视图控制器上覆盖这些方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2016-11-24
    相关资源
    最近更新 更多