ios - UISplitViewController,如何始终使用 UISplitViewControllerDisplayModePrimaryOverlay

标签 ios objective-c ios8 uisplitviewcontroller

我正在开发一个针对 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/

相关文章:

ios - 在 iOS 8 中显示 UIAlertView 时应用程序旋转

ios - 如何为我在 Swift 中以编程方式创建的 UIViewController 子类创建 init?

ios - 向 UILabel 添加两个阴影

ios - 内容更改时 WKWebView 不调整大小

objective-c - 计算数组中可以包含的最大对象数

ios - 我的简单 map 项目无法在模拟器中获取和显示我的位置

javascript - 如何使用 Cordova 在同一设备上获取其他已安装应用程序的版本?

ios - ViewController 的属性为零

ios - UIButton 图像在 tableviewcell 中被扭曲

ios - 显示键盘时获取当前文本字段