ios – 如何根据文本标签长度动态设置表格单元格高度?

我正在尝试学习Obj-C和iOS编程,但还是很新的.我决定尝试制作一个简单的Reddit客户端应用程序.我试图在UITableView中显示首页帖子,每个帖子都由自己的单元格表示.

在单元格中,我是如何设置标题的:

cell.textLabel.numberOfLines = 0;
cell.textLabel.text = [[tempDictionary objectForKey:@"data"] objectForKey:@"title"];   
[cell.textLabel sizetoFit];

但是,如果标题文本太长,单元格将自动剪裁.这是一张照片:

如何使我的单元格自动调整其高度以适应更长的标题标签,而不会与其他单元格或详细文本标签相交?

感谢您的任何帮助!

解决方法

对于新的iOS 8,有一个新的方法来使这个简单.

一个新的参数可以计算您的自动布局约束的单元格高度.这是UITableViewAutomaticDimension.您可以在视图控制器的viewWillAppear方法中使用它.

目标C:

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  self.tableView.estimatedRowHeight = 70.0; // for example. Set your average height 
  self.tableView.rowHeight = UITableViewAutomaticDimension;
  [self.tableView reloadData];
}

迅速:

override func viewWillAppear(animated: Bool) {
    self.tableView.estimatedRowHeight = 70 // for example. Set your average height 
    self.tableView.rowHeight = UITableViewAutomaticDimension
    self.tableView.reloadData()

}

工作很好,就像你想要的那样.对于我来说,我在viewDidLoad中添加高度的东西,并在viewWillAppear中留下reloadData().还有一个很有用的source.

从文档:rowHeight的认值为UITableViewAutomaticDimension.我现在离开代码,但是请记住,您不需要在iOS 8中设置行高.

您需要做的主要事情是明确设置所有约束.到领先,尾随,顶部和底部.先尝试一下,不要在上面添加任何代码行.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...