我正在尝试通过使用布局约束为collectionview设置动画,但是我无法使其正常工作。我有一个collectionview,它占据了整个屏幕,并且在单击按钮时我想实质上将其移动,以便为从底部进入的另一个视图腾出空间-请参见下面的图片
传入的UIView动画效果很好(视图从底部向上显示)-我要移动collectionview的原因是,传入的UIView会遮挡集合视图,因此我只是想在与新视图,这样就可以显示collectionview中的所有内容而不会被新视图隐藏-我使用参考视图来为collectionview Image to show what I am trying to achieve的最终位置获取正确的布局约束正确的方法吗?
下面的代码示例没有任何反应,我不确定从这里开始应该走什么地方-使用相同的方法为传入的视图设置动画,效果很好,但似乎不适用于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()
}
答案 0 :(得分:0)
您要在动画播放之前停用另一个
NSLayoutConstraint.deactivate([colViewBottomToViewBottom!])
NSLayoutConstraint.activate([colViewBottomToReferenceTop!])
查看此Demo