【问题标题】:UITableViewCells animating at different rate than collapsing tableHeaderViewUITableViewCells 的动画速度与折叠 tableHeaderView 不同
【发布时间】:2016-11-07 23:04:29
【问题描述】:

我正在尝试对正在为折叠设置动画的 tableView 标头(粉红色)进行故障排除。由于 tableViewHeader 高度正在缩小,因此表格视图单元格应与它们的 tableView 顶部(橙色)一起拉起。开始和结束状态是正确的,但不知何故,表格视图单元格的动画速度不同。这里显然有问题,我似乎无法确定它是什么。

这似乎与我使用自调整大小的表格视图单元格和tableView.rowHeight = UITableViewAutomaticDimension 的事实有关。如果我使用固定高度的单元格,一切都很好。

开始状态:

中间状态(注意单元格已经在标题下滑动):

最终状态(布局的最终​​状态是正确的):

这是动画折叠的代码。

 func collapseHeader() {
    UIView.animate(withDuration: 0.25, delay: 0, options: .curveEaseIn, animations: {
        self.tableView.beginUpdates()
        if let header = self.tableView.tableHeaderView as? TopicTableHeaderView {
            header.setHeaderState(state: .collapsed)
        }

        self.sizeHeaderToFit()
        self.view.layoutIfNeeded()
        self.tableView.endUpdates()
    }) { (bool) in
        print("collapse completed")
    }
}

 func sizeHeaderToFit() {

    if let headerView = tableView.tableHeaderView {
        let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
        var frame = headerView.frame
        frame.size.height = height

        if headerView.frame.height != height {
            headerView.frame = frame
            tableView.tableHeaderView = headerView
            headerView.setNeedsLayout()
            headerView.layoutIfNeeded()
        }
    }
}

【问题讨论】:

    标签: ios uitableview animation autolayout


    【解决方案1】:

    问题出在我打电话给self.tableView.beginUpdates() 的地方。我把它移到self.tableView.endUpdates() 正上方的那一行,就解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多