为什么我的 VC 在更换模拟器后移位了?自动布局

Why is my VC displaced after changing the Simulator? AutoLayout

嘿,这是我用来为我的视图元素设置自动布局约束的代码:

TimeLabel.translatesAutoresizingMaskIntoConstraints = false
               
    NSLayoutConstraint.activate([
               TimeLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
               TimeLabel.topAnchor.constraint(equalTo: view.topAnchor, constant: -30),
               TimeLabel.widthAnchor.constraint(equalToConstant: 300),
               TimeLabel.heightAnchor.constraint(equalToConstant: 300)
    
    ])

但是不行!当我将模拟器从 iPhone 11 更改为 iPhone 11 Pro 时,我看不到我的一些元素,因为整个 VC 都被置换了!

我能做什么? 提前致谢

特别是因为正如您所说,“在这个领域真的很新” - 我非常 建议您花一些时间了解 Auto-layout 并适应屏幕尺寸。

从 Apple 的文档开始,然后搜索教程...您会找到大量教程。

但是,为了帮助您开始理解,请查看这两个示例(您需要在新浏览器中打开它们 tabs/windows 以便更好地查看):

示例 1

如您所见,我给每个 UI 元素一个高度约束,然后,从顶部开始,每个元素之间有 40 磅的垂直 space 约束。

在 iPhone 11 上看起来不错,但由于 11 Pro 更短,第四个标签 已被推离屏幕底部。

示例 2

布局看起来非常相似,预计我将 UI 元素嵌入到 UIStackView 中。然后我约束了堆栈视图的顶部和底部,并将其 Distribution 属性 设置为 Equal Spacing.

现在,11 Pro 变短了,元素之间的间距变小了,我们仍然可以看到第四个标签


远不止于此。例如,当我们旋转设备时会发生什么?当我们 运行 在 12.9" iPad Pro 上时会发生什么?

但是,也许,希望这能给你一个起点。