我使用以下约束创建一个rect:
我虽然如果我优先考虑width >=250
到999
的约束,那么宽度equal == 200
将适用于小型设备,而width >= 250
则适用于大型。
但它没有奏效。我阅读了文档:
解决所需的约束后,自动布局会尝试 从最高到最高优先级顺序解决所有可选约束 最低。如果它无法解决可选约束,它会尝试 尽可能接近所需的结果,然后继续前进 下一个约束。
这种不平等,平等和优先事项的结合为您提供了帮助 极大的灵活性和力量。通过组合多个 约束,您可以定义动态适应大小的布局 以及用户界面中元素的位置发生变化。
答案 0 :(得分:4)
将应用约束的优先级以解决两个不同约束之间的冲突。应用具有更高优先级的约束来修改帧的视图。因此,您应该有另一个视图或使用superview将优先级应用于约束。
这是解释阻力优先的一个很好的答案:
Cocoa Autolayout: content hugging vs content compression resistance priority
答案 1 :(得分:1)
iOS就是你说的。根据屏幕大小,约束不会自动禁用。首先应用具有较高优先级的约束。
因此,当iOS需要布局视图时,它将查找您提供的规范。现在,根据您给出的规范,无论屏幕大小如何,视图的宽度都应为200(最高优先级)。因此,应用此约束,您将获得宽度为200的视图。
你怎么能做你想做的事?
您应该尝试禁用“宽度”规格为200的约束,当您的应用程序在大屏幕上运行时,您的其他约束将起作用并给出正确的结果。
用于禁用/启用约束 -