使用 UISplitViewController 时遇到的问题
在使用 Mac Catalyst
开发时遇到一个奇怪的问题,将 UISplitViewController.Style
设置为 doubleColumn
或者 tripleColumn
时,主控制器总是有一部分内容不显示,而出现在 window
外面。
window?.rootViewController = UISplitViewController(style: .doubleColumn)
// window?.rootViewController = UISplitViewController(style: .tripleColumn)
如上图,绿色部分超出 window
范围
不设置 UISplitViewController.Style
时,显示正常。
// 不设置 style 时,默认值似乎为 unspecified。但是将 style 设置为 unspecified 又会崩溃。
window?.rootViewController = UISplitViewController()
如上图,绿色部分正常显示
查阅资料后发现,苹果在 iOS 14
修改了 UISplitViewController
的行为。为了在主控制器显示完整内容,需要使用 safeArea
进行适配。
宛如 iOS 13
时,将 modalPresentationStyle
的默认值改为 pageSheet
。
tableView.snp.makeConstraints {
$0.top.bottom.trailing.equalToSuperview()
//$0.leading.equalToSuperview()
$0.leading.equalTo(view.safeAreaLayoutGuide.snp.leading)
}
如图,使用 safeArea
后,粉色的 tableView
显示正常,绿色的 self.view
依旧在游离在 window
之外。