gpt4 book ai didi

ios - 隐藏纵向的 UISplitViewController 覆盖

转载 作者:可可西里 更新时间:2023-11-01 03:28:44 26 4
gpt4 key购买 nike

在采用新的 UISplitViewController 时,我试图更改使用 UISplitViewControllerDisplayModeAutomatic 模式时发生的默认行为。

在纵向模式下工作时,我希望在用户触发向细节侧的推送时隐藏主要叠加层。默认情况下,叠加层会保留在屏幕上,直到用户点击详细信息一侧。

我已经尝试将以下内容与委托(delegate)一起使用:

- (BOOL)splitViewController:(UISplitViewController *)splitViewController showDetailViewController:(UIViewController *)vc sender:(id)sender
{
if (splitViewController.displayMode == UISplitViewControllerDisplayModePrimaryOverlay) {
[UIView animateWithDuration:0.3 animations:^{
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
}];
}
return NO;
}

这给了我想要的纵向行为,但这打破了横向模式(我想表现得像 UISplitViewControllerDisplayModeAllVisible)。如果您按下然后旋转设备,左侧仍然隐藏(正如预期的那样)。我找不到合适的地方来 Hook 以重新设置首选的旋转模式以显示左侧(因为特征集合不能用于在 iPad 上区分横向与纵向)。

我怎样才能手动触发关闭叠加层?

Dupe note: iOS8 已经完全改变了 UISplitViewController,所以在 6 月 14 日之前的所有其他 SO 答案可能都是错误的(而且我已经挖了很多,以防万一)

最佳答案

我遇到了和你一样的问题。我在 Xamarin 的单触摸平台上执行此操作,但我认为结果是一样的。

正如 LaborEtArs 所说,将您的代码移至主视图 Controller 的 prepareForSegue:sender: 方法。然后将模式设置为隐藏后,只需将模式设置为自动即可:

if (splitViewController.displayMode == UISplitViewControllerDisplayModePrimaryOverlay) {
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic;
}

这样操作后,就不再破坏横向模式了。

关于ios - 隐藏纵向的 UISplitViewController 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25557871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com