如何在情节提要中以iPad横向和纵向模式将不同的帧设置为同一视图?

时间:2018-06-28 17:11:19

标签: ios ipad autolayout storyboard size-classes

对于iPad,横向和纵向模式的特征限制相同。两者都是常规宽度和常规高度吗?

如何为两种模式分别设置约束,我需要如下图所示的布局:

enter image description here

风景模式:

enter image description here

1 个答案:

答案 0 :(得分:1)

您不能仅在界面生成器中处理这种情况。我建议您使用UIStackView并在代码中更改方向时更改其轴。

也许您还想为红色视图设置和激活/禁用一些宽度和高度限制,以根据当前方向保持其正确大小。

解决方案如下:

@IBOutlet weak var outerStackView: UIStackView!

@IBOutlet weak var redViewWidthConstraint: NSLayoutConstraint!
@IBOutlet weak var redViewHeightConstraint: NSLayoutConstraint!

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    let willTransitionToLandscape = (size.width > size.height)

    if willTransitionToLandscape {
        redViewHeightConstraint.isActive = false
        redViewWidthConstraint.isActive = true
    } else {
        redViewWidthConstraint.isActive = false
        redViewHeightConstraint.isActive = true
    }

    coordinator.animate(alongsideTransition: { _ in
        self.outerStackView.axis = willTransitionToLandscape ? .horizontal : .vertical
        self.view.layoutIfNeeded()
    })
}