我正在开发一个针对 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;
}
现在我有了一个非常酷的 Overlay :)
关于ios - UISplitViewController,如何始终使用 UISplitViewControllerDisplayModePrimaryOverlay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26405027/