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

Ios 为什么iPhone XR/Xs Max不遵守比率约束?,ios,nslayoutconstraint,Ios,Nslayoutconstraint,我有一个小的UIImageView,用于显示用户的个人资料照片。这在iPhone6S上看起来不错,但当我在iPhoneXR上运行它时,图像会缩小到屏幕上的一个小点。我尝试了不同型号的模拟器,这个问题只出现在XR/Xs Max模拟器上 最后,我发现了问题:我在这个UIImageView上有两个约束:32个点的宽度约束和1个比率约束。当我删除比率约束并添加32个点的高度约束时,一切正常 我想知道是什么原因导致iPhone XR/Xs Max不遵守比率约束?新车型是否不再支持比率约束 模拟器都运行iO

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

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

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

模拟器都运行iOS 12.2

--编辑--

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

imageView.frame = self.containerView.bounds
imageView.contentMode = .scaleAspectFit
imageView在所有其他型号上看起来都不错,填满了containerView。但在XR/XsMax上,右侧和底部都有一个边距:

我错过了什么

最后,我发现了问题:我在这个UIImageView上有两个约束:32个点的宽度约束和1个比率约束

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

在这里,一切都取决于你什么时候这么说。如果说得太早,例如在
viewdiload
中,则
containerView
本身还没有真正的
界限,因此最终会得到错误的结果。这就是为什么使用约束更好的原因。使用约束,可以保证图像视图符合其superview


因此,回到使用约束,正确配置纵横比,一切都会好起来。

关于您的第一条评论,我已经设置了约束,以相对于其他视图定位视图。我说的是它的尺寸限制。这很好,但在没有看到限制的真正含义之前,我无法知道这一点。您需要提供最小的可验证可复制代码。我无法知道您在实际显示的代码之外正在做什么。如果您真的需要好的帮助,请显示足够的代码。目前,我只知道你错了,也就是说,比率约束得到了尊重。让我看看你的限制,我会告诉你有什么问题。谢谢!关于第二个问题,我听从了你的建议,尝试了约束而不是限制。现在看起来不错。我仍然不明白为什么代码在其他模型上工作,也许XR使用了不同的代码逻辑。。。关于第一个问题,我似乎在约束字段中输入了数字1,而不是从下拉列表中选择“1:1”,我改变了这一点,现在宽度+比率约束按预期工作。好的,我将改变我的答案(有点作弊,但我们最好以一种好的方式帮助未来的读者)。
imageView.frame = self.containerView.bounds