我正在尝试学习 Obj-C 和 iOS 编程,但我仍然很陌生。我决定尝试制作一个简单的 Reddit 客户端应用程序。我正在尝试在 UITableView
中显示首页帖子,每个帖子都由其自己的单元格表示。
在单元格上,这是我设置标题的方式:
cell.textLabel.numberOfLines = 0;
cell.textLabel.text = [[tempDictionary objectForKey:@"data"] objectForKey:@"title"];
[cell.textLabel sizeToFit];
但是,如果标题文本太长,单元格最终会自行剪裁。这是一张照片:
如何让我的单元格自动调整高度以适应更长的标题标签,而不与其他单元格或详细文本标签相交?
感谢您的帮助!
最佳答案
对于新的 iOS 8,有一种新方法可以简化这一过程。
有一个新参数可以根据您的自动布局约束计算您的单元格高度。这是 UITableViewAutomaticDimension
。您可以在 View Controller 的 viewWillAppear
方法中使用它。
Objective-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];
}
swift :
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+ 中设置行高.
您需要做的主要事情是显式设置所有约束,例如到前导、尾随、顶部和底部。先尝试一下,不要在上面添加任何代码行。
关于ios - 如何根据文本标签长度动态设置表格单元格高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344400/