Программно отображать слайд поверх основного вида в UISplitViewController

#ios #cocoa-touch #uikit #uisplitviewcontroller

#iOS #cocoa-touch #uikit #uisplitviewcontroller

Вопрос:

При использовании UISplitViewController в портретном режиме на iPad мне предоставляется полноэкранный режим моего контроллера просмотра деталей, который предназначен. Я могу сдвинуть слева и открыть слайд основного вида, как я могу запустить этот слайд программно?

Ответ №1:

Кажется, что простого способа сделать это нет, но я обнаружил, что использование следующего кода обеспечивает предполагаемое поведение:

 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)
}
  

Комментарии:

1. Настройка preferredDisplayMode верна. Настройка его в функции анимации великолепна. Очень приятно.