我的结构稍微复杂(app仅限iPad):
我的根VC,MainVC,是一个自定义容器视图控制器,右上角有一个徽标(受自动布局约束)。
徽标下方有一个全屏容器视图,它嵌入了一个导航控制器子类,称之为NavVC。这样,当NavVC推送新控制器时,徽标可以固定并始终可见。
NavVC有一个名为MenuVC的根VC。
MenuVC使用自定义转换推送DataVC。
DataVC以模态方式呈现ModalVC(Apple的QLPreviewController)。
我需要将整个应用程序设置为仅景观,除了需要仅限肖像的ModalVC(我猜它可能都是两个但是它显示了一个纵向PDF所以它没有多大意义让它风景)
我所做的是:
我启用了项目设置中的所有旋转。
我将此代码添加到MainVC:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
这只会在Landscape中锁定所有应用程序,但由于某些原因,ModalVC仍然可以旋转到所有方向,这将是理想的,但不幸的是,这会导致我的问题:
如果我在呈现ModalVC时将iPad旋转到肖像(这是用户将用来阅读PDF的内容),然后在仍然使用肖像时关闭ModalVC,则MainVC徽标向左移动256个点,打破约束(虽然Xcode没有错误)。 有趣的是,256是iPad的宽度和高度之间的差异......巧合?
不确定是否有用但在呈现ModalVC时我在Xcode中收到此警告:
QLRemotePreviewContentController的开始/结束外观转换的非平衡调用