使用MultiLineLabel子视图使自定义视图增长

时间:2016-03-26 13:04:35

标签: macos autolayout nstextfield

我有一个简单的自定义视图,并在包装​​标签(多行标签)中作为子视图。我使用autolayout来设置约束。

Setup in interface builder

现在我希望superview更改其大小以显示包装标签的所有内容。我怎样才能做到这一点?包装实验室显示额外文本字段的内容(Outlet:" textfeld")。

Running

1 个答案:

答案 0 :(得分:0)

您需要设置内容拥抱和放大标签上的抗压力限制(以及其他约束)。

选择标签后,选择尺寸检查器。在底部,您将看到Constraints部分:

enter image description here

这些默认值约为250& 750.我们需要将这些增加到1000.这些限制控制着标签增长的方式。相对于其内容缩小,但具有如此低的优先级,您添加的每个其他自动布局约束将优先。因此,我们需要将这些约束的优先级提高到1000,并根据需要对其进行标记(或者至少需要增加内容压缩阻力优先级)。

现在你只是围绕那些有意义的实现其他自动布局约束。例如,如果您始终希望每侧至少有一个20像素的边框,距离顶部20像素,并且在您的超级视图中居中,则可以设置如下约束:

enter image description here

当然,有了这些约束,如果父视图没有被约束到最大宽度,你就不会隐式强制任何换行,所以它可能会扩展父视图的宽度。我们也可以为标签添加最大宽度约束。

enter image description here