【发布时间】:2019-12-28 17:11:55
【问题描述】:
我有一个集合视图,我修改了它的项目大小,我通过调用它的 performBatchUpdates 方法来应用更改。
这会导致使用漂亮的动画进行更改,事实是,它还会禁用所有用户与我的 collectionView 的交互,我希望仍然允许这样做。
我还尝试使用 .allowUserInteraction 选项将调用包装在 UIView.animate 块中,但没有成功。
func collectionView(_ collectionView: UICollectionView, didUpdateFocusIn context: UICollectionViewFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
workItem?.cancel()
workItem = DispatchWorkItem(block: {
UIView.animate(withDuration: 0.2, delay: 0, options: [.curveEaseOut, .allowUserInteraction], animations: {
self.collectionView.performBatchUpdates(nil, completion: nil)
}, completion: nil)
})
DispatchQueue.main.asyncAfter(wallDeadline: .now() + 0.5, execute: workItem!)
}
有什么办法可以克服这个问题并允许在动画期间进行用户交互?
【问题讨论】:
-
用户在动画中的集合视图上的交互听起来不连贯。你的真正目标是什么?
-
我在 tvOS 上,我有一个集合视图,我希望它的项目在聚焦时改变大小,虽然我确实使用上面的代码(以及
sizeForItemAt中的一些代码)实现了这个效果,但我不想在发生这种情况时阻止用户与应用程序交互,因此即使其中一个单元格正在改变它的大小,用户也可以继续滚动。
标签: ios swift uicollectionview uiviewanimation tvos