не может заставить стрелять огонь при смене ориентации - PullRequest
0 голосов
/ 04 июля 2018

Я разрабатываю приложение с Xcode9 с использованием Swift4, и оно изначально предназначалось только для iPad, но теперь должно работать и на телефонах. Мне нужно заблокировать телефоны на книжном, а iPad остается книжным / альбомным.

Я сделал это перед использованием функции mustautorotate и возвращением значений true или false в зависимости от устройства, как показано ниже.

override func shouldAutorotate() -> Bool {
   return false
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
   return UIInterfaceOrientationMask.all
}

Однако, когда я меняю ориентацию, она не срабатывает. Это еще один устаревший метод, и если да, то как мне теперь ограничить ориентацию?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

После долгих поисков это сработало для меня

https://stackoverflow.com/questions/38969419/ios-how-can-enable-or-disable-rotate-on-each-uiviewcontroller
0 голосов
/ 04 июля 2018

Если ваш контроллер представления встроен в UINavigationController или UITabBarController, то у него запрашивается shouldAutorotate(), так как этот контейнер является самым верхним контроллером представления. И после обновлений iOS он не запрашивает контроллеры представления, если они должны быть повернуты или нет. Таким образом, вы можете использовать свой пользовательский подкласс и создавать его во время выполнения или предоставлять в качестве пользовательского запроса в вашей раскадровке:

import UIKit
class CustomNavigationController: UINavigationController {
    override var shouldAutorotate: Bool {
        return self.viewControllers.last?.shouldAutorotate ?? true
    }
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return self.viewControllers.last?.supportedInterfaceOrientations ?? .all
    }        
}
...