如何在情节提要中为 iPad 横向和纵向模式将不同的框架设置为相同的视图?
Posted
技术标签:
【中文标题】如何在情节提要中为 iPad 横向和纵向模式将不同的框架设置为相同的视图?【英文标题】:How to set different frame to same view fo iPad landscape and portrait mode in storyboard? 【发布时间】:2018-12-07 20:32:38 【问题描述】:对于 iPad,横向和纵向模式的特征约束相同。那是两者的常规宽度和常规高度?
如何为两种模式设置单独的约束,我需要如下截图所示的布局:
横向模式:
【问题讨论】:
【参考方案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()
)
【讨论】:
以上是关于如何在情节提要中为 iPad 横向和纵向模式将不同的框架设置为相同的视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在情节提要 XCode6 (Swift) 中将所有视图控制器设置为风景