自动布局 4 个 UILabel,根据其内容/文本垂直高度
Posted
技术标签:
【中文标题】自动布局 4 个 UILabel,根据其内容/文本垂直高度【英文标题】:Auto layout 4 UILabels vertically with height according to their content/text 【发布时间】:2015-07-25 12:36:17 【问题描述】:我有一个UITableViewCell
,我正在使用UITableViewAutomaticDimension
自动计算行高。
(我正在从 ios 复制 Facebook cmets 的设计)
我需要将所有 4 个标签的高度调整到其内容的高度。
CC = 内容压缩 CH = 内容拥抱 [水平/垂直]
标签 1:CC = 750/750 CH = 249/750
标签 2:CC = 999/999 CH = 999/999
标签 3:CC = 750/749 CH = 249/749
标签 4:CC = 1000/1000 CH = 1000/1000
这里,标签 2 和标签 4 是最重要的标签。我不希望他们无论如何缩小。标签 1 和标签 3 可以缩小,但有一个限制。(比如说 30px)
我的单元格如下:
我得到了这个结果:
如果有人需要更多信息,请告诉我。
【问题讨论】:
【参考方案1】:我尝试复制您的表格视图单元格结构,但问题似乎是标签的preferredMaxLayoutWidth
未设置。
您可以在 Interface Builder 中显式设置它,也可以覆盖表格视图单元格的 updateViewConstraints
方法:
-(void)updateViewConstraints
CGFloat gap = 40.0; // sum of leading and trailing space
[super updateViewConstraints];
label.preferredMaxLayoutWidth = self.view.bounds.size.width - gap;
【讨论】:
【参考方案2】:您为 Label2 和 Label4 设置了布局约束 width
和 Lines = 0
。见下图:
Label1
将top constraint
设置为superview
,否则将Vertical Spacing
设置为上述标签。以下是Label3
的大内容和短内容结果。
编辑:您的自定义单元格如下所示:
您应该根据元素视图容器更新布局。
【讨论】:
Label3 不错,但是如果我同时在 Label2 和 Label4 中获得动态高度怎么办? 我只是更新我的答案。但不能清楚地向你解释:( 谢谢,我会尽力告诉你的。以上是关于自动布局 4 个 UILabel,根据其内容/文本垂直高度的主要内容,如果未能解决你的问题,请参考以下文章
如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度