【问题标题】:Autolayout: table cell with variable height and two labels自动布局:具有可变高度和两个标签的表格单元格
【发布时间】:2015-05-17 16:23:30
【问题描述】:

我遇到了一些高级自动布局主题,需要您的帮助。

我有一个简单的自定义表格单元格,标签固定在左侧,一个固定在右侧,非常简单:

现在,我希望左侧标签始终位于左上角,高一行,并根据内容缩放其宽度,最大为可用空间的 50%(如果内容多于此,我希望它被点切断):

我希望右侧标签始终位于右上角,向左增长直到到达左侧标签的右边框。根据左侧标签的宽度,右侧标签可能会变宽或变薄:

现在,如果内容不适合右标签,我希望它使用几行来改变单元格的大小,但仍然尊重左标签的大小:

我知道如何让标签自动增长表格单元格,但我不知道如何正确配置左右标签之间的关系。

谁能帮我解决这个问题?

非常感谢!

【问题讨论】:

    标签: ios cocoa-touch autolayout


    【解决方案1】:

    您需要以下约束:

    • leftLabel 的宽度约束表明它应该小于或等于父视图的width / 2。将此约束的优先级设为1000(绝对必需)。
    • leftLabel 的尾随到 rightLabel 的前导之间的水平间距约束,其优先级低于上述优先级,但仍需要(例如,900)。
    • 使leftLabel的横向内容拥抱优先1000

    XIB中第一个约束怎么做:

    基本上只是将leftLabel上的Ctrl + left click添加到superview,添加Equal Widths约束,然后将约束修改为<=而不是=。还要修改Multiplier;而不是1,改为1:22:1,其中2 对应于superview 的宽度。

    【讨论】:

    • 谢谢!成功了!我只想补充一件事:我无法将“宽度相等”约束设置为标签及其子视图,在我的例子中是表格视图单元格的内容视图。因此,我只是简单地向我的 tableViewCell 添加了另一个 UIView,它在所有四个边框上都具有 0 的约束,并将其余部分添加到这个新视图中作为超级视图。
    • 啊,是的——我忘了​​提,你需要添加额外的“包装”视图,因为你不能直接在单元格的contentView 上设置等宽约束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多