我正在使用包含UISplitViewController的Master-Detail模板。对于正尺寸Iphone横向模式,splitviewcontroller会自动将视图分为两部分。左侧为主视图控制器,右侧为详细视图控制器。
这种情况不适用于iPhone 5,6,8,X,它适用于IPhone 6 +,8 +等大小。
下面是SplitView委托方法的代码。
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController:UIViewController, onto primaryViewController:UIViewController) -> Bool
guard let secondaryAsNavController = secondaryViewController as? UINavigationController else { return false }
guard let topAsDetailController = secondaryAsNavController.topViewController as? DetailViewController else { return false }
if topAsDetailController.selectedEvent == nil {
// Return true to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
return true
}
return false
在文档之后,它看起来像是可能的:
在水平常规环境中,分割视图控制器尽可能并排显示其视图控制器。在水平紧凑的环境中,分割视图控制器更像是导航控制器,最初显示主视图控制器并根据需要推送或弹出辅助视图控制器。您还可以通过为preferredDisplayMode属性赋值来要求拆分视图控制器更喜欢特定的排列。
如果第一个不起作用,请尝试将preferredDisplayMode
设置为allVisible
或primaryOverlay
。