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

标签 ios objective-c uitableview

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

在单元格上,这是我设置标题的方式:

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

但是,如果标题文本太长,单元格最终会自行剪裁。这是一张照片:

enter image description here

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

感谢您的帮助!

最佳答案

对于新的 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/

相关文章:

iphone - 键值观察对 UITextView 的 Text 属性有效吗?

ios - 字典和表格部分问题 ios

ios - 跟踪内存警告源 - iOS

ios - UIToolbar 标准尺寸

iphone - 如何将 Xcode 4 项目修改为独立于机器的 Visual Studio 或 Eclipse 行为

另一个类上的 Objective-C 调用函数?

iphone - 如何解决iPhone应用程序hpple HTML解析 'libxml/tree.h'文件未找到的问题?

java - 超声波通讯

ios - 如何访问嵌入在容器 View 中的tableviewcontroller

ios - 对存储在 NSArray 中的键/值进行排序