我正在开发一个针对 iOS 8 设备的 iOS 应用程序,并且我使用 UISplitViewController。
我想使用 UISplitViewControllerDisplayModePrimaryOverlay
作为主视图 Controller 的默认呈现模式,而不是 UISplitViewControllerDisplayModeAllVisible
。
但是,当我运行应用程序时,UISplitViewController 已经位于 UISplitViewControllerDisplayModePrimaryOverlay 中。
我要寻找的是,当我打开应用程序时,我处于 UISplitViewControllerDisplayModePrimaryHidden
中,但是,呈现主 vc 应该位于 UISplitViewControllerDisplayModePrimaryOverlay
中。
我使用委托(delegate)方法- (UISplitViewControllerDisplayMode)targetDisplayModeForActionInSplitViewController:(UISplitViewController *)svc
像这样 :
self.splitviewcontroller.preferedDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
在 SplitVC 实例化时;
然后
- (UISplitViewControllerDisplayMode)targetDisplayModeForActionInSplitViewController:(UISplitViewController *)svc
{
if (svc.displayMode == UISplitViewControllerDisplayModePrimaryOverlay)
{
return UISplitViewControllerDisplayModePrimaryHidden;
}
else
{
return UISplitViewControllerDisplayModePrimaryOverlay;
}
}
但它使我的主 vc 内部的约束中断(但当我没有覆盖 targetDisplayModeForActionInSplitViewController:
时不会)。
有人能解决我的问题吗:(?
提前致谢。
编辑:
我尝试将 SplitViewController 的 Idiom UITrait 覆盖到 iPad,但它也不起作用:(
最佳答案
我成功地让它“发挥作用”。
在轮换时,我被迫将显示模式更改为 UISplitViewControllerDisplayModePrimaryHidden
以避免出现错误。
我在 SplitViewController 中重写了 willTransitionToTraitCollection
:
- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator
{
self.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
[super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
}
然后我在我的 SplitViewController Delegate 中重写了 targetDisplayModeForActionInSplitViewController
:
- (UISplitViewControllerDisplayMode)targetDisplayModeForActionInSplitViewController:(UISplitViewController *)svc
{
if (svc.displayMode == UISplitViewControllerDisplayModePrimaryHidden)
{
return UISplitViewControllerDisplayModePrimaryOverlay;
}
return UISplitViewControllerDisplayModePrimaryHidden;
}
现在我有了一个看起来非常酷的叠加层:)
关于ios - UISplitViewController,如何始终使用 UISplitViewControllerDisplayModePrimaryOverlay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26405027/