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多行的主要内容,如果未能解决你的问题,请参考以下文章
在 Tableview 中,我想知道如何在单元格最后位置设置多行 UILabel
UItableviewcell中的多行UIlabel使用Autolayout