UITableView中的UIlabel多行

Posted

技术标签:

【中文标题】UITableView中的UIlabel多行【英文标题】:UIlabel multiline in UITableView 【发布时间】:2015-08-26 09:44:25 【问题描述】:

我在 UITableView 中遇到了 UILabel 的问题。我想在UILabel中带来电影的情节,但是当应用程序开始时,我只有一行非完整情节,但是当我向下和向上滚动时,我得到了2-3行的完整电影情节。可能是什么问题?

在 UILabel 首选项中,我选择 0 行(它使标签为多行)。 在 ViewController 中,在“viewDidLoad”中我写了两行代码,使单元格可调整大小:

self.searchTableView.estimatedRowHeight = 44.0
self.searchTableView.rowHeight = UITableViewAutomaticDimension

【问题讨论】:

收到短信后有没有尝试layoutIfNeeded @anhtu No. 怎么用? @anhtu 哦,谢谢,这对我很有帮助! 例如:view (superview) 的 UILabel。获取文本后(搜索后)调用[view layoutIfNeeded]... 使用下面的委托方法来设置高度。可以根据您为标签中的特定文本计算的行数来计算高度。 - tableView:heightForRowAtIndexPath: 【参考方案1】:

设置UILabel的文本后调用[view layoutIfNeeded]。它将再次布局子视图。

【讨论】:

【参考方案2】:

使用多行 UILabel,您必须帮助它知道何时在布局期间换行。

为此,您需要设置preferredMaxLayoutWidth 属性。见https://developer.apple.com/library/ios/documentation/UIKit/Reference/UILabel_Class/#//apple_ref/occ/instp/UILabel/preferredMaxLayoutWidth

所以在你的 cellForRowAtIndexPath 方法中添加类似:

cell.yourUILabelIBOutlet.preferredMaxLayoutWidth = tableView.frame.size.width;

【讨论】:

这是唯一对我有用的解决方案。谢谢!【参考方案3】:

您可以使用 UITableViewCell 中的自动布局来做到这一点。它对我有用。

在表格视图中添加 UILabel

设置 UILabel 前导、尾随、顶部和底部约束。(注意:不要为该标签设置高度)

然后设置UILabel NO.Of line 0并设置换行模式。

设置表格视图单元格高度

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 

      tableView.estimatedRowHeight = 150
        return UITableViewAutomaticDimension



【讨论】:

【参考方案4】:

添加下面的代码并尝试一下。有效##

-(void)viewDidLoad [超级 viewDidLoad]; //在viewDidLoad的最后一行 [self performSelector:@selector(reloadtable) withObject:nil afterDelay:1.0];

-(void)reloadtable [self.tableView reloadData];

【讨论】:

以上是关于UITableView中的UIlabel多行的主要内容,如果未能解决你的问题,请参考以下文章

多行UILabel

在 Tableview 中,我想知道如何在单元格最后位置设置多行 UILabel

UItableviewcell中的多行UIlabel使用Autolayout

UILabel 中的多行文本

iOS:多行 UILabel 与水平 UIStackView 中的另一个 UILabel 大小错误

UIStackView 中的多行 UILabel 问题