如何在情节提要中为 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 横向和纵​​向模式将不同的框架设置为相同的视图?的主要内容,如果未能解决你的问题,请参考以下文章

Android 横向和纵​​向模式变体

iOS:如何在情节提要中在横向和纵向视图之间切换?

如何在情节提要 XCode6 (Swift) 中将所有视图控制器设置为风景

iPad 横向显示纵向框架和边界

在 IOS 6 中使用情节提要以横向模式呈现 modalViewController

如何使用情节提要约束将两个 UIPickerView 并排均匀分布?