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

时间:2019-06-19 17:50:36

标签: ios nslayoutconstraint

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

最后,我发现了问题:UIImageView上有2个约束:宽度约束为32点,比率约束为1。删除比率约束并添加高度约束为32点,一切正常。

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

所有模拟器都运行iOS 12.2。

-编辑-

另一个UI布局问题仅在XR / Xs Max上存在,与比率无关。我将UIImageView放入容器View中,并像这样设置其框架:

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

imageView在所有其他模型上看起来都不错,填充了containerView。但是在XR / XsMax上,左右两侧都有一个空白:

enter image description here

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

  

最后,我发现了问题:我对此UIImageView设置了2个约束:宽度约束为32点,比率约束为1。

那行得通。您很可能错误地配置了宽高比约束。

imageView.frame = self.containerView.bounds

在这里,一切取决于何时。如果您说得太早,例如在viewDidLoad中,则containerView本身还没有真正的bounds,因此您将得到错误的结果。这就是为什么使用约束要好得多的原因。使用约束,可以保证图像视图适合其超级视图。

所以回到使用约束条件,正确配置纵横比,一切都会好起来的。