Как сохранить альбомный или портретный режим при конвертации приложения в IPAD? - PullRequest
0 голосов
/ 27 июня 2019

В настоящее время я адаптирую приложение iphone для ipad и внедрил следующий код в viewController для поддержки одного из представлений в альбомной ориентации (другие представления в книжной):

override func viewDidLoad() {
    super.viewDidLoad()
    collectionView.dataSource = self
    collectionView.delegate = self

    //TODO: - Keep presentationView in landscape

    let value = UIInterfaceOrientation.landscapeLeft.rawValue
    UIDevice.current.setValue(value, forKey: "orientation")
}

override func viewDidDisappear(_ animated: Bool) {
    let value = UIInterfaceOrientation.portrait.rawValue
    UIDevice.current.setValue(value, forKey: "orientation")
}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .landscapeLeft
}

override var shouldAutorotate: Bool {
    return true
}

Это прекрасно работает для iphone, но не работает при отображении приложения на iPad, то есть вид поворачивается и может быть виден как в портретной, так и в альбомной ориентации. Буду благодарен за любые предложения о том, как я могу адаптировать код, чтобы он работал на iPad.

1 Ответ

0 голосов
/ 27 июня 2019

Добавить метод viewWillTransition (to: with :).Уведомляет контейнер о том, что размер его представления собирается измениться. UIKit вызывает этот метод перед изменением размера представленного представления контроллера представления.Вы можете переопределить этот метод в своих собственных объектах и ​​использовать его для выполнения дополнительных задач, связанных с изменением размера.

 override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    if UIDevice.current.orientation.isLandscape {
        print("Landscape")
        // Update frame
    } else {
        print("Portrait")
         // Update frame
    }
}

enter image description here

...