iOS 12 (и ниже) ориентация вращения - PullRequest
2 голосов
/ 24 октября 2019

скажем, у нас есть 2 vc, vc1 имеет верхнюю половину экрана, а vc2 имеет нижнюю половину в портретном режиме, когда устройство поворачивается в ландшафтный режим, vc1 должен занимать левую половину экрана, а vc2правильный.

все хорошо для ios 13, переход проходит гладко, но для ios12 и ниже vc1 и vc2 перекрываются при переходе ...

вот что я сделал:

override func viewDidLoad() {
        super.viewDidLoad()

        setOrietation()
    }

    override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
        super.viewWillTransition(to: size, with: coordinator)

        coordinator.animateAlongsideTransition(in: nil, animation:
            {
                [weak self] _ in
                self?.setOrietation()
        }, completion: nil)
    }

    private func setOrietation() {
        if UIScreen.main.bounds.width > UIScreen.main.bounds.height { // landscape

            vc1BottomConstraint.constant = 0
            vc1TrailingConstraint.constant = 450

            vc2TopConstraint.isActive = false
            vc2TopConstraint = vc2.topAnchor.constraint(equalTo: view.topAnchor)
            vc2TopConstraint.isActive = true
            vc2LeftConstraint.isActive = false
            vc2LeftConstraint = vc2.leftAnchor.constraint(equalTo: vc1.rightAnchor)
            vc2LeftConstraint.isActive = true
        } else {
            vc1BottomConstraint.constant = 512
            vc1TrailingConstraint.constant = 0

            vc2TopConstraint.isActive = false
            vc2TopConstraint = vc2.topAnchor.constraint(equalTo: vc1.bottomAnchor)
            vc2TopConstraint.isActive = true
            vc2LeftConstraint.isActive = false
            vc2LeftConstraint = vc2.leftAnchor.constraint(equalTo: view.leftAnchor)
            vc2LeftConstraint.isActive = true
        }
    }

Я тоже попробовал то же самое, не используя ограничений и не фокусируясь на кадре ... все тот же результат

Есть идеи, как мне этого добиться?

...