swift - 如何使用自动布局 anchor 对 UICollectionView 进行动画处理?

标签 swift animation uicollectionview autolayout nslayoutconstraint

我正在尝试使用布局约束来为 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/

相关文章:

ios - 如何将多个选定的 TableView 单元格数据传输到 Swift 中的下一个 View Controller ?

ios - UICollectionViewCell Spacing 设置为 0 但仍然有间距

ios - 在 UICollectionView 中禁用 UIAttachmnetBehavior 的垂直移动

iOS CollectionView header 不显示

ios - 如何从 iOS 中的 Url 获取特定值 - Swift 3

swift - 'String' 不可转换为 'String?'

ios - swift 4 "This class is not key value coding compliant"

文本上的 Css 动画 Scale()

java - Android onTouch 动画在 ACTION_UP 上移除

c - Gtk 移动表面变得模糊