UITableViewCell在滚动太快时无法正确重绘

时间:2016-08-02 04:42:50

标签: swift uitableview autolayout

我在iOS中使用动态高度上的单元格的自动布局,我遇到了一个随机发生的非常奇怪的错误。似乎有时我滚动太快(虽然不是所有时间),但是有一个分隔符显示在单元格上,好像高度计算得不够快。有人能指出我可能出错的方向吗? 这是我在cellforRowAtIndexPath中的代码:         cell.layoutIfNeeded()

    // http://stackoverflow.com/questions/16366596/uitableview-performance-issues-when-adding-uiviews-to-cell-contentview
    cell.layer.shouldRasterize = true
    cell.layer.rasterizationScale = UIScreen.mainScreen().scale
    cell.layer.opaque = true

    cell.opaque = true

图片如下所示: Incorrect Image

这是正确的图片: enter image description here

计算身高的代码:

func viewDidLoad() {
    tableView.rowHeight = UITableViewAutomaticDimension

    self.tableView.sectionFooterHeight = UITableViewAutomaticDimension;
    self.tableView.estimatedSectionFooterHeight = 10;

    self.tableView.delegate = self
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    cell.selectionStyle = UITableViewCellSelectionStyle.None

    cell.layoutIfNeeded()

    // http://stackoverflow.com/questions/16366596/uitableview-performance-issues-when-adding-uiviews-to-cell-contentview
    cell.layer.shouldRasterize = true
    cell.layer.rasterizationScale = UIScreen.mainScreen().scale
    cell.layer.opaque = true

    cell.opaque = true

    return cell
}

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 0
}


func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 10
}

0 个答案:

没有答案