Как бы я добавил новый ViewController тогда и только тогда, когда экран повернут в ландшафтный режим в Swift? - PullRequest
1 голос
/ 18 февраля 2020

Я запускаю первый проект в swift, и мне нужно добавить новый ViewController, когда экран поворачивается в ландшафтном режиме. И если повернуть обратно в портретный режим, он вернется к исходному экрану. Я новичок в стремительном, поэтому, пожалуйста, объясните как можно яснее. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Попробуйте это

Первый ViewController

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {


override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    if UIDevice.current.orientation.isLandscape {
        print("Landscape")
        let vc2 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController2")
        self.navigationController?.pushViewController(vc2!, animated: false)
    } else {
        print("Portrait")
    }
}
override func viewDidAppear(_ animated: Bool) {
    let value = UIInterfaceOrientation.portrait.rawValue
    UIDevice.current.setValue(value, forKey: "orientation")
}
override func viewDidLoad() {
    super.viewDidLoad()
}
}

Второй ViewController

class ViewController2: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    if UIDevice.current.orientation.isLandscape {
        print("Landscape")
    } else {
        print("Portrait")
        self.navigationController?.popViewController(animated: false)
    }
}
}

Вы обнаружите изменение ориентации в методе viewWillTransition, поэтому вам нужно переопределить его

0 голосов
/ 18 февраля 2020

Похоже, вам обязательно стоит проверить SplitViewControllers. Это позволяет вам (для iPad и iPhone Pluses) иметь вид разделенного экрана с двумя видами одновременно (для других устройств это будет так же, как навигационный контроллер).

Ниже пара скриншотов фиктивного SplitView I только что сделал

Here is the Landscape mode

Это в ландшафтном режиме

Here is the Portrait mode

Here is the Portrait mode

Это в портретном режиме

Вы также можете сделать его свертываемым, отслеживая ориентация устройства или жесты. По умолчанию вы можете показать или свернуть подробный вид с помощью жеста влево / вправо.

Здесь вы можете проверить достойное руководство по SplitViewController

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...