Кажется, нет простого способа сделать это, но я обнаружил, что использование следующего кода имеет ожидаемое поведение:
UIView.animate(withDuration: 0.2, animations: {
self.splitViewController?.preferredDisplayMode = .primaryOverlay
})
Убедитесь, что вы установили режим отображения обратно на automatic
при горизонтальном повороте, чтобы он всегда отображал мастер и детали, как по умолчанию:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: { _ in
if UIDevice.current.orientation == .landscapeLeft || UIDevice.current.orientation == .landscapeRight {
self.splitViewController?.preferredDisplayMode = .automatic
}
}, completion: nil)
}