当使用UIModalPresentationCustom
呈现模态时,它会忽略方向方法,并显示/旋转到呈现VC的任何内容。
实施例:
preferredInterfaceOrientationForPresentation
和supportedInterfaceOrientations
。在没有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即将发生时调用提出来了。仍然没有找到解决这个问题的方法。
答案 0 :(得分:0)
也许我迟到了。关键是,当使用UIModalPresentationCustom时,呈现VC不会消失,并且所呈现的VC不被视为全屏显示(即使它确实占据了全屏)。因此,它是为支持的接口方向而参考的呈现VC。所以解决方案可以是:
- (NSUInteger)supportedInterfaceOrientations
{
if (self.presentedViewController) {
return [self.presentedViewController supportedInterfaceOrientations];
}
return [super supportedInterfaceOrientations];
}
答案 1 :(得分:0)
如果你只使用UIModalPresentationCustom
来保持呈现VC在下面,请说你需要一个清晰的彩色VC,我的答案也适用于你: