iOS : 如何正确使用 Size 类 (或其他解决方案)来获得不同的纵向和横向布局?
iOS : How to properly use Size Classes (or other solution) to have different portrait and landscape layouts?
到目前为止,我的应用程序只处理横向,现在我希望它也处理纵向。
几乎所有的视图最终都应该根据方向有非常不同的布局,所以我首先想到创建另一个 Storyboard 并将它们中的每一个分配给一个特定的方向。但从我从这里读到的所有内容来看,这似乎不是正确的做法。
这是我想要的布局:
所以我尝试使用 Size 类 来代替,但我对它的工作原理感到很困惑。例如,我从这个现有的布局中尝试了这个:
final class TestCell: UITableViewCell {
@IBOutlet weak var headerLabel: UILabel!
@IBOutlet weak var subtextLabel: UILabel!
}
更改方向,根据宽度单击“Vary for traits”,并使用 "Done Varying"、
更新布局
但是现在当我想保存它并返回横向模式时,我最终得到了两个方向相同的布局:
那我做错了什么?
感谢您的帮助!
根据您的要求,您可以使用UIStackView
、
在Portrait
模式下[wC hR],保持UIStackView
轴为Vertical
并且在Landscape
模式下[wChC],应该是Horizontal
希望对您有所帮助。
再次尝试对 Traits 使用 Vary...
- 先做纵向布局
wC hR
- 然后以横向模式查看
- 你现在在
wC hC
- 单击 Vary for Traits,然后 select
Height
(宽度仍然是 wC
)
- 修改您的约束...删除不适用于此布局的约束,添加将适用的新约束
- 完成
应该给你想要的。
到目前为止,我的应用程序只处理横向,现在我希望它也处理纵向。 几乎所有的视图最终都应该根据方向有非常不同的布局,所以我首先想到创建另一个 Storyboard 并将它们中的每一个分配给一个特定的方向。但从我从这里读到的所有内容来看,这似乎不是正确的做法。
这是我想要的布局:
所以我尝试使用 Size 类 来代替,但我对它的工作原理感到很困惑。例如,我从这个现有的布局中尝试了这个:
final class TestCell: UITableViewCell {
@IBOutlet weak var headerLabel: UILabel!
@IBOutlet weak var subtextLabel: UILabel!
}
更改方向,根据宽度单击“Vary for traits”,并使用 "Done Varying"、
更新布局但是现在当我想保存它并返回横向模式时,我最终得到了两个方向相同的布局:
那我做错了什么? 感谢您的帮助!
根据您的要求,您可以使用UIStackView
、
在Portrait
模式下[wC hR],保持UIStackView
轴为Vertical
并且在Landscape
模式下[wChC],应该是Horizontal
希望对您有所帮助。
再次尝试对 Traits 使用 Vary...
- 先做纵向布局
wC hR
- 然后以横向模式查看
- 你现在在
wC hC
- 单击 Vary for Traits,然后 select
Height
(宽度仍然是wC
) - 修改您的约束...删除不适用于此布局的约束,添加将适用的新约束
- 完成
应该给你想要的。