gpt4 book ai didi

ios - 允许在 PerformBatchUpdates 期间进行用户交互

转载 作者:行者123 更新时间:2023-11-29 05:12:52 24 4
gpt4 key购买 nike

我有一个 Collection View ,我修改它的项目大小,我通过调用它的 performBatchUpdates 方法来应用更改。

这会导致使用漂亮的动画进行更改,问题是,它还会禁用与我的 collectionView 的所有用户交互,而我仍然希望允许这样做。

我还尝试使用 .allowUserInteraction 选项将调用包装在 UIView.animate block 内,但没有成功。

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!)
}

有什么方法可以克服这个问题并允许用户在动画期间进行交互吗?

最佳答案

如果 workItem 很重,您可以尝试将其移至后台线程。根据我的经验,在主线程上执行某些操作时更新/更改 UICollectionView 总是会卡住 UI。

你可以尝试:

   DispatchQueue.global(qos: .background).async {
workItem!
}

关于ios - 允许在 PerformBatchUpdates 期间进行用户交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59513115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com