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