Swift 更改CollectionView上的高度约束时出现奇怪的动画(自动布局)

Swift 更改CollectionView上的高度约束时出现奇怪的动画(自动布局),swift,uicollectionview,autolayout,Swift,Uicollectionview,Autolayout,我有一个collectionView,我需要为它设置高度变化的动画,所以它从屏幕底部向上展开,然后再向下展开。很难解释到底出了什么问题,所以我附上了模拟器的录音。动画对于展开来说很好,但是对于折叠来说非常奇怪-内容在动画制作时部分消失,然后在完成后重新出现。动画代码在scrollView“scrollViewDidScroll(uScrollView:UIScrollView)”委托方法期间触发,逻辑用于确定是折叠还是展开。expand动画的代码几乎完全相同,效果很好 动画代码- private

我有一个collectionView,我需要为它设置高度变化的动画,所以它从屏幕底部向上展开,然后再向下展开。很难解释到底出了什么问题,所以我附上了模拟器的录音。动画对于展开来说很好,但是对于折叠来说非常奇怪-内容在动画制作时部分消失,然后在完成后重新出现。动画代码在scrollView“scrollViewDidScroll(uScrollView:UIScrollView)”委托方法期间触发,逻辑用于确定是折叠还是展开。expand动画的代码几乎完全相同,效果很好

动画代码-

private func collapseTable() {
    guard self.isTableChangingSize == false else { return } // as the delegate method is triggered during the animation, we use a flag to prevent multiple collapse calls
    guard self.tableHeightConstraint.constant != self.tableCollapsedHeight else { return } // don't collapse if we're already collapsed

    self.isTableChangingSize = true
    self.tableHeightConstraint.constant = self.tableCollapsedHeight

    UIView.animate(withDuration: 0.5, animations: {
        self.view.layoutIfNeeded()
    }) { _ in
        self.isTableChangingSize = false
    }
}
这里有几段视频介绍了正在发生的事情-

在尝试不同的方法和调整所有东西太久之后,问题似乎是在动画块期间允许滚动。如果你设定-

self.collectionView.isScrollEnabled = false
在动画块之前,以及-

self.collectionView.isScrollEnabled = true
在完成过程中,一切都很好