防止 UICollectionView 在 vi​​ew.layoutIfNeeded 期间产生动画

Jus*_*ite 6 collectionview ios uicollectionview swift swift3

我正在我的应用程序中构建一个与消息应用程序非常相似的页面。此页面的顶部有一个工具栏,其正下方有一个集合视图,集合视图下的视图包含用于发送消息的文本字段。

集合视图是两个用户之间的消息列表。它由使用自动布局的自调整大小的单元组成。

我按照许多人的建议添加了一个 KeyboardNotification 侦听器,以便在键盘引入屏幕时向上移动我的文本字段。为了使其工作,包含文本字段的视图有一个约束,使其保持在底部布局指南。当键盘被调出时,该约束上的常量会发生变化以适应键盘高度。

这很有效,但我的问题在于,为了动画化约束更改,必须调用view.layoutIfNeeded(). 这会导致我的集合视图单元格短暂调整大小并设置动画。这非常烦人,看起来很糟糕,所以我问:如何layoutIfNeeded在父视图上调用时保持集合视图单元格不动画?

Hen*_*iao 5

尝试这个:

// ... modification on constraints
UIView.animate(withDuration: 0.4) {
    // To lock the animation for collectionView.
    UIView.performWithoutAnimation {
        self.collectionView.performBatchUpdates(nil, completion: nil)
    }
    self.view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)