Swift 如何使用自动布局定位设置UICollectionView的动画?

Swift 如何使用自动布局定位设置UICollectionView的动画?,swift,animation,uicollectionview,autolayout,nslayoutconstraint,Swift,Animation,Uicollectionview,Autolayout,Nslayoutconstraint,我试图通过使用布局约束来设置collectionview的动画,但是我无法让它工作。我有一个占据整个屏幕的collectionview,点击一个按钮,我想将collectionview向上移动,为从底部进入的另一个视图腾出空间-请参见下图 传入的UIView动画效果良好(视图从底部向上)-我想移动collectionview的原因是传入的UIView会遮挡collection视图,因此我只是尝试在新视图的同时向上移动collectionview,以便collectionview中的所有内容都可以

我试图通过使用布局约束来设置collectionview的动画,但是我无法让它工作。我有一个占据整个屏幕的collectionview,点击一个按钮,我想将collectionview向上移动,为从底部进入的另一个视图腾出空间-请参见下图

传入的UIView动画效果良好(视图从底部向上)-我想移动collectionview的原因是传入的UIView会遮挡collection视图,因此我只是尝试在新视图的同时向上移动collectionview,以便collectionview中的所有内容都可以显示,而不会被新视图隐藏-我使用参考视图来获得正确的布局约束对于collectionview的最终位置,我的做法是否正确

下面的代码示例没有发生任何变化,我也不确定从这里开始该怎么做-相同的方法用于设置传入视图的动画,效果很好,但似乎不适用于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!])

看看这个

谢谢你的回复,这似乎对我不起作用。即使我尝试在viewDidLoad中测试是否仅将底部锚定设置为参考顶部锚定(以检查锚定是否工作),它也不会调整集合视图。我不知道为什么锚不起作用-它起作用了。它看起来好像没有,因为collectionview在向上滚动之前仍然占据了视图。