Как отключить вращение в View Controller, когда происходят какие-то конкретные действия?

Есть ли конкретное значение или метод View Controller, чтобы отключить вращение, в то время как происходят определенные действия? Например, я хочу разрешить вращение на этом контроллере вида за все время, кроме одного.

func deleteAction(at indexPath: IndexPath) -> UIContextualAction {
let action = UIContextualAction(style: .destructive, title: "Remove") { (action, view, completion) in
    DispatchQueue.main.async {
        self.showActivityIndicator()
    }
    DispatchQueue.global(qos: .default).async {
        SingleTon.shared.deleteWordFromVocabulary(word: SingleTon.shared.getWords()[indexPath.section][indexPath.row], indexPath: indexPath.row)

        DispatchQueue.main.async {
            self.tableView.deleteRows(at: [indexPath], with: .automatic)
            self.stopActivityIndicator()
        }
    }
}

Когда появляется индикатор активности, я хочу отключить вращение моего View Controller. И когда мой индикатор активности исчезает, я хочу включить вращение View Controller обратно.

Всего 1 ответ


Да, есть метод, который можно использовать для ограничения поддерживаемых ориентаций интерфейса:

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { self.restrictRotation /* could be limited or not */ }

он должен быть внутри AppDelegate , но вы можете использовать что-то вроде Notification / Observer или некоторый шаблон делегирования, чтобы передать ограничение AppDelegate или установить его из другого места.


Есть идеи?

10000