這裏是我如何覆蓋我的視圖控制器,但是,如果有另一種更好的方式來做到這一點,使我的第二個視圖控制器不符合覆蓋請直接給我,任何建議將是很好的。如何讓viewWillTransition保持一個視圖控制器而不是全部?
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: { (UIViewControllerTransitionCoordinatorContext) -> Void in
let orient = UIApplication.shared.statusBarOrientation
switch orient {
case .portrait:
print("Portrait")
self.applyPortraitConstraint()
break
// Do something
default:
print("LandScape")
// Do something else
self.applyLandScapeConstraint()
break
}
}, completion: { (UIViewControllerTransitionCoordinatorContext) -> Void in
print("rotation completed")
})
super.viewWillTransition(to: size, with: coordinator)
}
func applyPortraitConstraint(){
stackView.axis = .vertical
stackView.distribution = .fill
}
func applyLandScapeConstraint(){
stackView.axis = .horizontal
stackView.distribution = .fillEqually
}
當我運行我的應用程序,它需要通過我的應用程序這種方法,它甚至打印旋轉完成每個我已經旋轉的VC,是我的代碼在一個VC上沒有任何其他VC,因爲這個VC有一個我的stackView的插座,所以這使我困惑 –
在print(「rotation completed」)之前添加'print(self)'並查看self的值是否與所有回調相同或不同 – Malik
另一點需要考慮需要考慮的是,視圖控制器的viewWillTransition(如果它也使用super.viewWillTransition)會將消息傳播到其子視圖控制器。 – Malik