Задать вопрос
@seneast
Python-dev

Как выключить поворот для одного контроллера?

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

FirstViewController.swift
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .portrait
}
override var shouldAutorotate: Bool {
    return false
}


SecondViewController.swift
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .allButUpsideDown
}
override var shouldAutorotate: Bool {
    return true
}


Открытие дочернего контроллера:
let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
secondViewController.modalPresentationStyle = .custom
self.present(secondViewController, animated: true, completion: nil)


Проблема в том что при открытии дочернего контроллера и при повороте экрана так же поворачивается главный контроллер.

Тестовый проект: https://github.com/sieroshtan/RotationTest
  • Вопрос задан
  • 525 просмотров
Подписаться 5 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    iOS-разработчик
    10 месяцев
    Далее
  • Нетология
    iOS-разработчик с нуля
    11 месяцев
    Далее
  • LearnQA
    Автоматизатор мобильных приложений
    9 недель
    Далее
Пригласить эксперта
Ответы на вопрос 1
попробуй для первого контроллера реализовать метод preferredInterfaceOrientationForPresentation и возвращай оттуда .portrait, раньше работало))

func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
        return .portrait
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы