为什么在 iPhone XR/Xs Max 上不遵守比率约束?

Why is ratio constraint not respected on iPhone XR/Xs Max?

我有一个小 UIImageView 用于显示用户的个人资料照片。这在 iPhone 6S 上看起来不错,但是当我在 iPhone XR 上 运行 它时,图像在屏幕上缩小为一个小点。我尝试了不同型号的模拟器,这个问题只出现在 XR/Xs Max 模拟器上。

最后,我发现了问题:我在这个UIImageView上有2个约束:32点的宽度约束和1的比例约束。当我删除比例约束并添加高度时32点约束,一切正常

我想知道是什么原因导致 iPhone XR/Xs Max 不遵守比率约束?新模型是否不再支持比率约束?

模拟器都是运行ning iOS12.2。

--编辑--

另一个 UI 布局问题仅在 XR/Xs Max 上,与比例无关。我将 UIImageView 放入容器视图中,并将其框架设置为:

imageView.frame = self.containerView.bounds
imageView.contentMode = .scaleAspectFit

imageView 在所有其他模型上看起来都很好,填充了 containerView。但是在XR/XsMax上,右边和底部有一个边距:

我在这里错过了什么?

In the end, I found the problem: I had 2 constraints on this UIImageView: a width constraint of 32 points and a ratio constraint of 1.

确实有效。您很可能错误地配置了纵横比约束。

imageView.frame = self.containerView.bounds

这里,一切就看什么时候你说了。如果你说得太早,比如在viewDidLoad中,containerView本身还没有真正的bounds,那么你最终会得到一个错误的结果。这就是为什么使用约束要好得多。使用约束,您可以保证图像视图适合其父视图。

所以回到使用约束,正确配置宽高比,一切都会好的。