UIModalPresentationCustom会弄乱方向设置

时间:2014-09-26 14:05:20

标签: ios uiviewcontroller

当使用UIModalPresentationCustom呈现模态时,它会忽略方向方法,并显示/旋转到呈现VC的任何内容。

实施例

  • 呈现VC支持横向和纵向。
  • 提供的VC支持仅限 的肖像<(preferredInterfaceOrientationForPresentationsupportedInterfaceOrientations

在没有UIModalPresentationCustom的情况下展示它时,它会将视图旋转回肖像,然后相应地显示VC。不幸的是,因为我需要在下面显示VC,我被迫使用UIModalPresentationCustom。当发生这种情况时,呈现VC将被强制进入横向模式,从而创建混乱的UI并生成约束问题。即使以纵向呈现,也可以旋转成横向,忽略shouldAutorotate返回NO。

PS:我在iOS 7上找到了一种解决方法,将此方法添加到我的App Delegate中,但它并没有在iOS 8上修复它。

@implementation UIViewController (customModalFix)

- (BOOL)shouldAutorotate
{
    if ([self.presentedViewController isKindOfClass:[IntroViewController class]]) {
        return [self.presentedViewController shouldAutorotate];
    }
    return YES;
}

@end

编辑:在呈现VC上实现supportedInterfaceOrientations根本没有帮助,因为它只在加载视图时调用,而不是在VC即将发生时调用提出来了。仍然没有找到解决这个问题的方法。

2 个答案:

答案 0 :(得分:0)

也许我迟到了。关键是,当使用UIModalPresentationCustom时,呈现VC不会消失,并且所呈现的VC不被视为全屏显示(即使它确实占据了全屏)。因此,它是为支持的接口方向而参考的呈现VC。所以解决方案可以是:

- (NSUInteger)supportedInterfaceOrientations
{
    if (self.presentedViewController) {
        return [self.presentedViewController supportedInterfaceOrientations];
    }
    return [super supportedInterfaceOrientations];
}

答案 1 :(得分:0)

如果你只使用UIModalPresentationCustom来保持呈现VC在下面,请说你需要一个清晰的彩色VC,我的答案也适用于你:

https://stackoverflow.com/a/29167837/4694080 1