我在自定义Labels
中有以下四个TableViewCell
,目前看起来像这样:
我有这个:
第一个,第三个和第四个标签的宽度约束固定,最大行数设置为1.第二个Label
填充标签1和3之间的水平空间。
我希望第二个Label
最多包裹2行并垂直对齐到顶部,以便每个标签的第一行对齐如下:
我想要这个:
我已将每个标签的背景颜色设置为灰色,以便可以看到约束。
答案 0 :(得分:1)
要顶部对齐UILabel,您可以将所有UILabel的边距顶部约束设置为常量,或设置顶部对齐约束。要设置顶部对齐约束,请选择标签并按住Ctrl键从标签拖动到另一个标签。从弹出窗口中选择顶部对齐方式。
要记住的一件事是,对于第二个标签,将4个边距长度设置为大约5pt,但不要像其他标签一样限制其宽度或高度。
选择第二个标签后,可在右侧实用程序面板中配置最多2行。
动态改变单元格的高度有点棘手。首先,您应该知道文本是否足够长,以将标签拉伸为2行和标签的高度。 (See Here)如果文本足够长以占用两行,则该方法将返回一个比正常情况更大的高度值。根据此高度更改,使用以下UITableViewDelegate动态更改该UITableViewCell的高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
希望这有帮助。
答案 1 :(得分:1)
您可以使用自定尺寸单元格来实现此目的。为了完成这项工作,请将这两行添加到UITableview
:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 50
然后在Interface Builder中,在Prototype Cell中设置以下约束:
取消选中"约束边距"关于所有约束。
标签1:
标签2:
标签3:
标签4:
如果设置这样的约束,当第二个标签将其文本换行到第二行时,单元格高度会自动变高。