Pre*_*fix 14 objective-c uitableview ios
我正在尝试学习Obj-C和iOS编程,但我仍然很新.我决定尝试制作一个简单的Reddit客户端应用程序.我试图在a中显示首页帖子UITableView
,每个帖子由自己的单元格表示.
在单元格上,这是我设置标题的方式:
cell.textLabel.numberOfLines = 0;
cell.textLabel.text = [[tempDictionary objectForKey:@"data"] objectForKey:@"title"];
[cell.textLabel sizeToFit];
Run Code Online (Sandbox Code Playgroud)
但是,如果标题文本太长,则单元格最终会剪切自身.这是一张图片:
如何让我的单元格自动调整其高度以适应更长的标题标签,而不会与其他单元格或详细文本标签相交?
感谢您的任何帮助!
Dim*_*lov 19
对于新的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];
}
Run Code Online (Sandbox Code Playgroud)
迅速:
override func viewWillAppear(animated: Bool) {
self.tableView.estimatedRowHeight = 70 // for example. Set your average height
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
工作很好,你想要的例子.至于我,我只viewDidLoad
在viewWillAppear
reloadData()中添加高度内容.还有一些有用的来源.
从文档:The default value of rowHeight is UITableViewAutomaticDimension.
我现在保留代码,但请记住,您不需要在iOS 8+中设置行高.
您需要做的主要事情是明确地设置所有约束,例如前导,尾随,顶部和底部.首先尝试,不添加任何上面的代码行.
PHD*_*PHD 11
你应该看看文档参考的
-[UITableViewDelegate tableView:heightForRowAtIndexPath:]
Run Code Online (Sandbox Code Playgroud)
基本上,您需要自己测量文本,以便为每个表行返回正确的尺寸.如果它们很简单NSStrings
,它们似乎来自您的屏幕截图,您可以使用NSString UIKit Additions来测量它们,例如
-[NSString sizeWithFont:constrainedToSize:]
Run Code Online (Sandbox Code Playgroud)
约束大小可以具有无限高度但是表格单元格内容视图的宽度.
如果它们是属性字符串,则在NSAttributedString UIKit添加中调用类似的方法 boundingRectWithSize:options:context:
归档时间: |
|
查看次数: |
25425 次 |
最近记录: |