【问题标题】:IOS Auto layout not displaying the UILabel in multiple lines when content length is longer当内容长度较长时,IOS自动布局不显示多行UILabel
【发布时间】:2015-09-20 13:46:18
【问题描述】:

我正在尝试构建一个类似于 twitter/instagram 个人资料页面的屏幕,其中有一个标题部分并且在该可滚动内容下方。

我有一个视图控制器,它有一个表格视图。我想在表格单元格顶部包含一个标题视图。所以我在我的单元格上方拖放了一个“视图”,它工作正常。现在我在这个标题视图中有一个标签,我希望标签高度和 UI 视图高度根据标签的内容长度自动调整。 (如果内容是长字符串,标签的行数应该自动增加,容器视图(headerview)的高度应该根据它的内容项属性增加。

我试图在表格上设置自动布局(左上角和右下角到容器视图(headerview)。但是标签显示为单行,在最右边的角被截断。如果我从我的约束,标签出现在多行中,但容器视图(headerview)的高度没有增加,因此在下面的表格顶部产生了标签的重叠。

我将标签的行数属性设置为 0。

谁能分享一些想法如何做到这一点?我正在使用 Xcode 7 和 swift 2

【问题讨论】:

  • 你是如何计算页眉高度的?这可能是因为标题高度没有随着标签高度增加。填充布局后尝试查看调试。然后你可能会发现标签高度增加了,但标题高度保持不变,这限制了标签高度。

标签: swift2 xcode7 ios-autolayout


【解决方案1】:

您想要完成的任务有多种方法。如果您不关心标题是否与单元格一起滚动,最简单的方法是执行以下操作:

----------------
Header
  Label
TableView
----------------
  1. 您应该将标题固定在上、右、左。
  2. 您应该将 tableView 固定在右、下、左。
  3. 您应该固定 Header.bottom = TableView.top。
  4. 您应该将 Label 4 面固定到它的 superview(Header)。
  5. 设置标签 numberOfLines = 0

如果您的标头具有固定宽度,则标签将自动继承该宽度,并且设置 numberOfLines=0(即无限行数)将使您的标签增加其高度。因为您的标签通过它的 4 个边固定到它的 superView(并且标题没有固定高度),所以您的标题必须增加它的高度以匹配标签高度。 希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多