使用 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 之外。