Ios 我不知道';我不了解约束优先级

Ios 我不知道';我不了解约束优先级,ios,autolayout,Ios,Autolayout,我使用以下约束创建了一个rect: 我想如果我将优先级设置为width>=250到999,那么widthequal==200将在小型设备上工作,而在大型设备上则将width>=250工作 但它没有起作用。我阅读文档: 解决所需约束后,“自动布局”将尝试 按从最高到最高的优先级顺序求解所有可选约束 最低的。如果无法求解可选约束,则会尝试 尽可能接近期望的结果,然后继续 下一个约束 这种不平等、平等和优先权的结合让你 极大的灵活性和力量。通过组合多个 约束,可以定义随尺寸动态调整的布局 和用户界面

我使用以下约束创建了一个rect:

我想如果我将优先级设置为
width>=250
999
,那么width
equal==200
将在小型设备上工作,而在大型设备上则将
width>=250
工作

但它没有起作用。我阅读文档:

解决所需约束后,“自动布局”将尝试 按从最高到最高的优先级顺序求解所有可选约束 最低的。如果无法求解可选约束,则会尝试 尽可能接近期望的结果,然后继续 下一个约束

这种不平等、平等和优先权的结合让你 极大的灵活性和力量。通过组合多个 约束,可以定义随尺寸动态调整的布局 和用户界面中元素的位置更改


你说什么就做什么。约束不会根据屏幕大小自动禁用。优先级较高的约束将首先应用

因此,当iOS需要布局您的视图时,它将查找您提供的规范。现在,根据您给定的规范,无论屏幕大小如何,视图的宽度都应为200(最高优先级)。因此,应用此约束,您将获得宽度为200的视图

你怎么能做你想做的

您应该尝试禁用“宽度”规格为200的约束,当您的应用程序在大屏幕上运行时,其他约束将起作用并给出正确的结果

对于禁用/启用约束-


将应用约束的优先级,以解决两个不同约束之间的冲突。将应用具有更高优先级的约束修改框架的视图。因此,您应该有另一个视图或使用superview将优先级应用于约束

这是一个很好的答案,解释了阻力的优先级:


如果您有一个约束,规定宽度应为200,并且该约束是必需的,那么它将始终为200点宽。在您列出的约束中,我没有看到任何会导致它们转换为>=250约束的约束。如果框有足够的空间,你会想添加一些像前导和尾随约束这样的东西,试图使框变宽。只有当两个约束冲突时,优先级才会成为平局的破坏者。因此,您不能仅具有
宽度>=250的单个约束,并期望图像的大小根据设备中视图的大小而增长。您必须添加其他约束,以允许自动布局在新添加的约束中考虑此不平等性。