在采用新的UISplitViewController
我正在尝试更改使用时发生的默认行为UISplitViewControllerDisplayModeAutomatic
mode.
在纵向工作时,我希望当用户触发推送到细节侧时隐藏主覆盖层。默认情况下,叠加层保留在屏幕上,直到用户点击细节侧。
我尝试对委托使用以下内容:
- (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
)。如果您按下并旋转设备,左侧仍然隐藏(如预期)。我找不到合适的位置来重新设置旋转时的首选模式以显示左侧(因为特征集合不能用于区分 iPad 上的横向与纵向)。
如何手动触发叠加层的解除?
杜佩注意事项: iOS8已经改变UISplitViewController
完全如此,所以 14 年 6 月之前的所有其他答案可能都是错误的(我已经挖掘了其中的许多答案,以防万一)
我和你有同样的问题。我在 Xamarin monotouch 平台上执行此操作,但我认为结果是相同的。
就像 LaborEtArs 所说的那样,将您的代码移至prepareForSegue:sender:
主视图控制器的方法。然后将其设置为隐藏后将模式设置为自动:
if (splitViewController.displayMode == UISplitViewControllerDisplayModePrimaryOverlay) {
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic;
}
这样做之后,就不再破坏横向模式了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)