我正在尝试使用布局约束来为 CollectionView 制作动画,但是我无法让它工作。我有一个占据整个屏幕的 Collection View ,在点击按钮时,我想基本上向上移动 Collection View ,以便为另一个 View 从底部进入腾出空间 - 参见下面的图片
传入的 UIView 动画效果很好( View 从底部升起) - 我想移动 CollectionView 的原因是传入的 UIView 遮挡了 Collection View,所以我只是尝试同时向上移动 CollectionView新 View ,以便可以显示 CollectionView 中的所有内容,而不会被新 View 隐藏 - 我使用引用 View 来获取 CollectionView 最终位置的正确布局约束 Image to show what I am trying to achieve我以正确的方式处理这件事吗?
下面的代码示例没有任何反应,我不知道从这里开始哪里 - 相同的方法用于对传入 View 进行动画处理并且工作得很好,但似乎不适用于 CollectionView...
如有任何帮助,我们将不胜感激
var colViewBottomToReferenceTop: NSLayoutConstraint?
var colViewBottomToViewBottom: NSLayoutConstraint?
override func viewDidLoad() {
super.viewDidLoad()
colViewBottomToReferenceTop = musicCollectionView.bottomAnchor.constraint(equalTo: referenceView.topAnchor)
colViewBottomToViewBottom = musicCollectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
NSLayoutConstraint.active([colViewBottomToViewBottom!])
NSLayoutConstraint.deactivate([colViewBottomToReferenceTop!])
}
func playerShow() {
NSLayoutConstraint.activate([colViewBottomToReferenceTop!])
UIView.animate(withDuration: 0.5, animations: {
self.view.layoutIfNeeded()
})
}
@IBAction func btnTapped(_ sender: UIButton) {
playerShow()
}
最佳答案
您想在动画之前停用另一个
NSLayoutConstraint.deactivate([colViewBottomToViewBottom!])
NSLayoutConstraint.activate([colViewBottomToReferenceTop!])
看看这个Demo
关于swift - 如何使用自动布局 anchor 对 UICollectionView 进行动画处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51651712/