【问题标题】:iOS Storyboard Constraints/Traits for portrait and landscape view纵向和横向视图的 iOS 故事板约束/特征
【发布时间】:2017-12-12 17:43:06
【问题描述】:
我的 iOS 项目目前只有一个 UIView 或 UIViewController。控制器类称为 MainViewController.swift。
视图控制器的视图有一个我放在底部的子视图:
我已经设置了自动布局选项来保持每个设备尺寸的子视图的距离相同:
现在我想让子视图始终位于父视图的短边,这意味着在横向模式下,子视图显示在父视图的右侧:
我同时查看了一些教程和其他帖子:
此时我不清楚如何最好地实现这种行为?
我发现解决问题的可能性:
- 因特征而异...但如何?
- 约束?
- 以编程方式 - 我认为这是最快的解决方案,但我真的很想使用故事板并学习正确的用法。
【问题讨论】:
标签:
ios
swift
xcode
storyboard
【解决方案1】:
在这里,您可以使用尺码等级和特征。如果你想在纵向模式下给出约束,你必须选择紧凑宽度和常规高度,对于横向紧凑宽度紧凑高度。
请按照以下步骤分别约束纵向和横向。
1) 请从特征中选择横向和纵向模式。
2) 现在,您可以一个一个地约束每个模式。假设我在纵向模式下对红色视图进行约束,并且我将为纵向尺寸类启用特定约束,因此它将在横向模式下禁用。
3)一旦我们完成纵向模式,我就切换到紧凑高度紧凑的常规尺寸类,即横向模式。
4) 现在,我们可以约束横向模式,如上图所示。
正如我们所见,浅色的约束在当前尺寸类中被禁用。
这就是我们可以分别限制横向和纵向模式的方式。
【解决方案2】:
因为横向 iPad 和纵向 iPad 之间没有尺寸等级或特征差异,您最终至少必须以编程方式处理某些情况。在这种情况下,您不妨使用执行以下操作的方法以编程方式处理所有情况:
- 获取当前屏幕尺寸
- 如果宽度 > 高度,添加约束以使子视图垂直居中并将其固定到右边缘。否则,添加约束以使子视图水平居中并将其固定到底部边缘。