草庐IT

ios - UISplitViewController,如何始终使用 UISplitViewControllerDisplayModePrimaryOverlay

coder 2024-01-19 原文

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

有关ios - UISplitViewController,如何始终使用 UISplitViewControllerDisplayModePrimaryOverlay的更多相关文章

随机推荐