我正在我的应用中构建一个与消息应用非常相似的页面。此页面顶部有一个工具栏,正下方有一个集合视图,集合视图下有一个视图,其中包含用于发送消息的文本字段。
集合视图是两个用户之间的消息列表。它由使用自动布局的自定尺寸单元组成。
我已按照许多人的建议添加了一个keyboardNotification侦听器,以便在键盘引入屏幕时移动我的文本字段。为了使其工作,包含文本字段的视图具有一个约束,使其保持在底部布局指南中。当键盘启动时,该约束的常量被改变以适应键盘高度。
这很有效,但我的问题在于,为了设置约束更改的动画,必须调用view.layoutIfNeeded()
。这会导致我的集合视图单元格短暂调整大小并设置动画。它非常烦人,看起来很糟糕,所以我问:如何在父视图中调用layoutIfNeeded
时保持集合视图单元格的动画效果?
答案 0 :(得分:1)
尝试一下:
// ... 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()
}