iPad的问题在于两个方向均表示为Regular。
其中一个解决方案是在两个IBOutlet中集合添加到您希望这个方向改变发生您的视图控制器,例如:
@IBOutlet var landscapeConstraints: [NSLayoutConstraint]!
@IBOutlet var portraitConstraints: [NSLayoutConstraint]!
转至故事板,切换到自适应布局要发生在iPad纵向方向和控制从每个ACTIVE约束拖到portraitConstraints IBOutlet。 将适应布局更改为您想要为景观发生的布局,并再次控制从ACTIVE约束拖到landscapeConstraints IBOutlet。
鉴于控制器倍率viewWillTransitionToSize
方法:
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
let transitionToLandscape = size.width > size.height
let constraintsToUninstall = transitionToLandscape ? ortraitConstraints : landscapeConstraints
let constraintsToInstall = transitionToLandscape ? landscapeConstraints : portraitConstraints
view.layoutIfNeeded()
coordinator.animateAlongsideTransition({
_ in
NSLayoutConstraint.deactivateConstraints(constraintsToUninstall)
NSLayoutConstraint.activateConstraints(constraintsToInstall)
self.view.layoutIfNeeded()
}, completion: nil)
}
//膨胀,约束例如:
转到任何-任何尺寸和类看到约束它们中的一些将是这意味着在这里没有活跃,但会在不同规模的类别中活跃,例如任何常规活动。
//压缩扩大
要设置初始方向可以覆盖viewWillAppear中,并安装/卸载的权利限制:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
let transitionToLandscape = view.frame.size.width > view.frame.size.height
let constraintsToUninstall = transitionToLandscape ? portraitConstraints : landscapeConstraints
let constraintsToInstall = transitionToLandscape ? landscapeConstraints : portraitConstraints
view.layoutIfNeeded()
NSLayoutConstraint.deactivateConstraints(constraintsToUninstall)
NSLayoutConstraint.activateConstraints(constraintsToInstall)
}
看到这个职位http://stackoverflow.com/questions/27067078/ios -autolayout-change-possition-on-rotation/27073472#27073472,如果它可以帮助您 – Sandeep