标签的Autolayout水平对齐,除非另一个项目侵占

时间:2017-07-18 09:57:24

标签: ios autolayout

我有一个自定义导航栏(控制器顶部的简单UIView),它有两个对象,一个描述屏幕的标签和一个右侧的按钮。

我希望在可能的情况下将标签水平(中心)对齐 。当屏幕尺寸太小时(例如4" iPhone),我希望标签向左移动以允许两个项目完全显示并且文本不会被截断。

这是空间允许时的样子:

This is the way it should look when space allows:

小型设备,不理想:

Small device, not ideal:

我希望在小型设备上看到它:

How I would like it too look on small devices:

有人知道AutoLayout是否可以实现这一点?

2 个答案:

答案 0 :(得分:1)

使用自动布局尝试此操作:

同时提供Content Compression Resistance priority的{​​{1}}标题。

您的左侧标题应为1000,优先级为Center Horizontally constraint。 (给它<1000)。

在他们和其他约束之间给他们750

答案 1 :(得分:0)

您还可以创建可选约束。所有约束的优先级都在1到1000之间。需要优先级为1000的约束。所有其他约束都是可选的。

您可以创建一个优先级为1000的约束,另一个优先级为750.

计算解决方案时,自动布局会尝试从最高到最低的优先级顺序满足所有约束。如果它不能满足可选约束,则跳过该约束并继续执行下一个约束。

即使无法满足​​可选约束,它仍然可以影响布局。如果在跳过约束后布局中存在任何歧义,系统将选择最接近约束的解决方案。通过这种方式,不满意的可选约束充当了向它们提取视图的力量。

在此处查看Apple文档Constraint Priorities