func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let json = JSON(data: activityTableView.onlineFeedsData)[indexPath.row] // new
if(json["topic"]["reply_count"].int > 0){
if let cell: FeedQuestionAnswerTableViewCell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifier_reply) as? FeedQuestionAnswerTableViewCell{
cell.selectionStyle = .None
cell.tag = indexPath.row
cell.relatedTableView = self.activityTableView
cell.configureFeedWithReplyCell(cell, indexPath: indexPath, rect: view.frame,key: "activityTableView")
// Make sure the constraints have been added to this cell, since it may have just been created from scratch
cell.layer.shouldRasterize = true
cell.layer.rasterizationScale = UIScreen.mainScreen().scale
return cell
}
}else{
if let cell: FeedQuestionTableViewCell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifier) as? FeedQuestionTableViewCell{
cell.selectionStyle = .None
cell.tag = indexPath.row
cell.relatedTableView = self.activityTableView
cell.configureFeedCell(cell, indexPath: indexPath, rect: view.frame)
// Make sure the constraints have been added to this cell, since it may have just been created from scratch
cell.layer.shouldRasterize = true
cell.layer.rasterizationScale = UIScreen.mainScreen().scale
return cell
}
}
return UITableViewCell()
}
每个单元格的高度差异为200-400,因此尝试在estimatedHeightForRowAtIndexPath
中实现高度计算。我不能将此方法中的精确估计高度计算为bcz
并在willDisplayCell
方法中缓存高度,但滚动跳转仍然需要时间来渲染。
该单元格类似于Facebook卡类型布局,包含大量具有可变高度文本和图像的动态数据。有人可以帮助我。谢谢
答案 0 :(得分:0)
如果您能够计算每个单元格的高度,只需使用tableView(_:heightForRowAtIndexPath)而不是estimatedRowHeightAtIndexPath属性。 estimatedRowHeightAtIndexPath主要用于smthg,如自缩细胞等。
答案 1 :(得分:0)
试试这个。我希望这可以帮到你。它对我有用。实际上,这会在显示之前计算单元格高度。 感谢。
NSMutableDictionary *cellHeightsDictionary;
//将它放在viewDidLoad
中cellHeightsDictionary = @{}.mutableCopy;
// UITableview委托方法
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
NS_AVAILABLE_IOS(7_0)
{
NSNumber *height = [cellHeightsDictionary objectForKey:indexPath];
if (height) return height.doubleValue;
return UITableViewAutomaticDimension;
}
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
[cellHeightsDictionary setObject:@(cell.frame.size.height) forKey:indexPath];
}