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
  • 修改您的约束...删除不适用于此布局的约束,添加将适用的新约束
  • 完成

应该给你想要的。