скажем, у нас есть 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
}
}
Я тоже попробовал то же самое, не используя ограничений и не фокусируясь на кадре ... все тот же результат
Есть идеи, как мне этого добиться?