如何仅通过Storyboard实现Portrait/Landscape切换时视图位置调整
如何通过Storyboard实现横竖屏的自适应布局需求
嘿,这个需求完全可以靠Storyboard里的Size Classes来搞定,不用写一堆添加/移除约束的代码,咱们一步步来操作:
第一步:配置竖屏(wCompact hRegular)下的约束
首先确保你在Storyboard底部的Size Class选择器切换到wCompact hRegular(这是iPhone竖屏的默认尺寸类):
- 给视图A添加约束:
- 顶部与安全区域对齐(Top to Safe Area)
- 左右两侧与安全区域对齐(Leading/Trailing to Safe Area)
- 高度设置为你需要的值(比如200)
- 给视图B添加约束:
- 顶部与视图A的底部对齐(Top to Bottom of A)
- 左右两侧与安全区域对齐
- 高度设置为你需要的值
第二步:配置横屏(wRegular hCompact)下的约束
接下来切换到横屏对应的尺寸类:点击底部的Size Class选择器,选择wRegular hCompact:
- 先禁用竖屏时B的顶部约束:
- 选中视图B那个「Top to Bottom of A」的约束
- 在右侧Attributes Inspector里找到Installed选项,点击旁边的小加号
- 取消
wRegular hCompact的勾选,这样这个约束只会在竖屏生效
- 添加横屏专属的约束:
- 给视图B添加「Leading to Trailing of A」约束(让B紧贴A的右侧,可按需设置间距)
- 添加「Top to Top of A」约束(让B和A顶部对齐)
- 添加「Width Equal to A's Width」约束(如果要平分宽度,可修改Multiplier为0.5)
- 添加「Height Equal to A's Height」约束(让B和A高度一致)
小提示
- 如果需要更灵活的宽度分配,比如A占1/3、B占2/3,可以调整Equal Widths约束的Multiplier值
- 所有针对特定尺寸类的约束,都会在对应屏幕方向下自动生效,不用写任何代码
内容的提问来源于stack exchange,提问作者Shankar Naik
相关产品推荐
相关产品推荐

