【问题标题】:How to make a label display multiple lines before the leading constraint of another label?如何使一个标签在另一个标签的前导约束之前显示多行?
【发布时间】:2021-05-02 23:11:16
【问题描述】:

我正在做一本学习 iOS 开发的书的作业。赋值要求表格单元格左上区域的名称标签如果名称太长,应该能够显示多行,并且不应超出同一单元格最右侧的值标签的前导约束像这样:

除了其他常用的约束外,我在名称标签上添加了尾随约束,它等于值标签的尾随约束,如下所示:

而运行结果如下:

名称标签文本超出了值标签文本的顶部。

我也尝试在名称标签和值标签之间添加一个水平空格,但编译器报告了约束冲突。你能告诉我我应该怎么做才能使它正确吗?

非常感谢!

【问题讨论】:

    标签: ios uitableview user-interface constraints uicollectionviewcell


    【解决方案1】:

    首先,您需要将您的名称标签尾随约束设置为您的值标签前导,如下所示

    然后,如果您尝试增加名称标签的内容,则会显示如下错误

    要解决此错误,请转到视图控制器视图层次结构并更改名称标签的优先级

    那你实现了……

    【讨论】:

    • 感谢 Silversky Technology 的回答。我试过你的方法,除了值标签被挤成省略号或简单地推到右边距之外,几乎可以工作。我通过将名称标签的“内容压缩阻力优先级”从 750 调低到 250 解决了这个问题。现在一切正常。不过,我要感谢你为我提供了一个开始的线索。
    【解决方案2】:

    如果您输入正确,那么您的问题是您将名称标签的尾随锚点设置为值标签的尾随锚点。这意味着每个标签的右边缘必须相等。你不想要那个。系统可能正在打破您的约束并制造出自己的怪异行为,从而导致不良行为。

    将名称标签的尾随锚点设置为等于值标签的前导锚点减去一些常量(无论您想要什么填充)。

    您以编程方式执行此类操作

    nameButton.translatesAutoresizingMaskIntoConstraints = false
    nameButton.trailingAnchor.constraint(equalTo: valueButton.leadingAnchor, constant: -10)
    

    如果你必须使用故事板,我一般不建议这样做,我认为这个或其他一些教程页面会告诉你如何做。我根本不知道如何很好地使用故事板。

    https://www.raywenderlich.com/811496-auto-layout-tutorial-in-ios-getting-started

    【讨论】:

    • 感谢您的即时回复。这正是我想要并尝试添加的约束,但我还没有找到添加的方法。请告诉我如何在情节提要而不是代码中添加约束?谢谢。
    • 感谢凯尔·布姆斯的回答。我尝试了将名称标签的尾随约束与值标签的前导约束以及作为填充的常量对齐的代码。然而,它并没有按预期进行。结果与上述 Silversky Technology 提供的答案相同。我发现将名称标签的“内容压缩阻力优先级”从 750 调低到 250 确实有帮助。但是谢谢你的帮助。您和 Silversky Technology 确实为我提供了解决问题的初步线索。
    【解决方案3】:

    试过这个,希望下面是你需要的结果

    final result

    为了得到这个

    1. 先在单元格中插入两个标签,如下所示

    labels added

    1. 给定标题标签的顶部和前导约束

    title label constraints

    1. 为了在标题和数量之间提供约束(水平间距) 右键单击并按住标题标签并拖动到金额标签。它会显示一个
      弹窗如下

    horizontal spacing

    一旦我们选择了水平间距,我们就必须根据需要进行更改

    为了更改选择标题标签,然后从
    中选择size inspector 右侧窗口

    然后将尾随空格更改为金额标签

    updated value

    现在给定标题标签的约束

    • 领先
    • 顶部
    • 数量标签的水平间距(尾随)

    一旦给出它就会在约束中显示错误,因为没有给出数量标签约束

    接下来必须对数量标签进行限制

    • 尾随
    • 宽度和大小
    • 单元格上的垂直位置

    constraints for amount label

    现在尝试在标题标签中输入更大的文本值

    look like one more step to complete

    为了获得多行,将标题标签的line属性值更改为0属性检查器

    final output

    【讨论】:

    • 感谢@Chandramohan KP 的耐心帮助。我尝试了您的方法,但不幸的是它不适用于带有 iPhone 11 模拟器的 Xcode 12.4。结果是值标签消失了,就好像它被推到了单元格的右边距一样。我不知道出了什么问题,但无论如何感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    相关资源
    最近更新 更多