在UITableViewCell
方法中(即给定indexPath),如何获得heightForRowAtIndexPath
?
(然后,我可以访问我创建的内容 View 以增加其高度)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// How to get the UITableViewCell associated with this indexPath?
}
谢谢
编辑:实际上真的有一个有效的方法来做到这一点吗?当我放置一些
NSLog
语句时,似乎在调用heightForRowAtIndexPath
之前,它多次调用了cellForRowAtIndexPath
(这是我在单元格中设置UILabels
的地方)吗?这种含义意味着我可能会尝试使用一种行不通的技术,即我希望通过heightForRowAtIndexPath
访问每个单元格中已经创建的标签,以获取它们的高度,并将它们加在一起作为整个单元格行的高度,但是如果它们尚未设置(在cellForRowAtIndexPath
内),那么我想我的方法不能真正起作用? 最佳答案
对于 iOS8 :
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.estimatedRowHeight = 80
self.tableView.rowHeight = UITableViewAutomaticDimension
}
或者
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
但是对于 iOS7 ,关键是计算自动布局后的高度,
func calculateHeightForConfiguredSizingCell(cell: GSTableViewCell) -> CGFloat {
cell.setNeedsLayout()
cell.layoutIfNeeded()
let height = cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingExpandedSize).height + 1.0
return height
}
注意:
1)如果有多行标签,请不要忘记将
numberOfLines
设置为0。2)不要忘记
label.preferredMaxLayoutWidth = CGRectGetWidth(tableView.bounds)
关于iphone - 如何在heightForRowAtIndexPath中获取UITableViewCell?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5254723/