使用包装标签增加 TableViewCell 高度
Grow TableViewCell height with wrapping Label
我在自定义 TableViewCell
中有以下四个 Labels
,目前看起来像这样:
我有这个:
第一个、第三个和第四个标签的宽度限制是固定的,最大行数设置为 1。第二个 Label
填充标签一和标签三之间的水平 space。
我希望第二个 Label
最多换行 2 行并垂直对齐到顶部,以便每个标签的第一行对齐如下:
我想要这个:
我已将每个标签的背景色设为灰色,以便可以看到约束条件。
要使UILabel 顶部对齐,您可以将所有UILabel 的margin 顶部约束设置为常量,或者设置顶部对齐约束。要设置顶部对齐约束,select 标签并按住 ctrl 从标签拖动到另一个标签。 Select 弹出窗口的顶部对齐方式。
要记住的一件事是,对于第二个标签,将 4 个边距长度设置为 5pt 左右,但不要像其他标签那样限制其宽度或高度。
在 select 添加第二个标签后,在右侧的实用程序面板中最多可以配置 2 行。
动态改变单元格的高度有点棘手。首先,您应该知道文本是否足够长以将标签拉伸成 2 行以及标签的高度。 (See Here) 如果文本长到足以占两行,该方法将 return 一个比正常情况下更大的高度值。基于这个高度变化,使用下面的 UITableViewDelegate 来动态改变那个 UITableViewCell 的高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
希望对您有所帮助。
您可以使用自动调整大小的单元格来实现此目的。为了使这项工作将这两行添加到您的 UITableview
:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 50
然后在 Interface Builder 的 Prototype Cell 中设置以下约束:
取消选中所有约束的 "Constraint to margins"。
标签 1:
- 顶部:10
- 左:10
- 底部:更大或等于 10
- 宽度:60(或任何实际宽度)
标签 2:
- 顶部:10
- 左:10
- 底部:10
标签 3:
- 顶部:10
- 左:10
- 底部:更大或等于 10
- 宽度:60(或任何实际宽度)
标签 4:
- 顶部:10
- 左:10
- 右:10
- 底部:更大或等于 10
- 宽度:60(或任何实际宽度)
如果您这样设置约束,当第二个标签将其文本换行到第二行时,单元格高度会自动变高。
我在自定义 TableViewCell
中有以下四个 Labels
,目前看起来像这样:
我有这个:
第一个、第三个和第四个标签的宽度限制是固定的,最大行数设置为 1。第二个 Label
填充标签一和标签三之间的水平 space。
我希望第二个 Label
最多换行 2 行并垂直对齐到顶部,以便每个标签的第一行对齐如下:
我想要这个:
我已将每个标签的背景色设为灰色,以便可以看到约束条件。
要使UILabel 顶部对齐,您可以将所有UILabel 的margin 顶部约束设置为常量,或者设置顶部对齐约束。要设置顶部对齐约束,select 标签并按住 ctrl 从标签拖动到另一个标签。 Select 弹出窗口的顶部对齐方式。
要记住的一件事是,对于第二个标签,将 4 个边距长度设置为 5pt 左右,但不要像其他标签那样限制其宽度或高度。
在 select 添加第二个标签后,在右侧的实用程序面板中最多可以配置 2 行。
动态改变单元格的高度有点棘手。首先,您应该知道文本是否足够长以将标签拉伸成 2 行以及标签的高度。 (See Here) 如果文本长到足以占两行,该方法将 return 一个比正常情况下更大的高度值。基于这个高度变化,使用下面的 UITableViewDelegate 来动态改变那个 UITableViewCell 的高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
希望对您有所帮助。
您可以使用自动调整大小的单元格来实现此目的。为了使这项工作将这两行添加到您的 UITableview
:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 50
然后在 Interface Builder 的 Prototype Cell 中设置以下约束:
取消选中所有约束的 "Constraint to margins"。
标签 1:
- 顶部:10
- 左:10
- 底部:更大或等于 10
- 宽度:60(或任何实际宽度)
标签 2:
- 顶部:10
- 左:10
- 底部:10
标签 3:
- 顶部:10
- 左:10
- 底部:更大或等于 10
- 宽度:60(或任何实际宽度)
标签 4:
- 顶部:10
- 左:10
- 右:10
- 底部:更大或等于 10
- 宽度:60(或任何实际宽度)
如果您这样设置约束,当第二个标签将其文本换行到第二行时,单元格高度会自动变高。