ios - 关闭屏幕时未调用 UICollectionView performBatchUpdates 完成

标签 ios swift uicollectionview uikit fbsnapshottestcase

我正在为我的 View Controller 使用快照测试。这是在测试中初始化 View Controller 的方式:

window.addSubview(viewController.view) // simulate the view is visible (probably unnecessary)
viewController.view.frame = self.snapshotFrame // set frame
viewController.beginAppearanceTransition(true, animated: false) // simulate VC's life cycle
viewController.endAppearanceTransition()

我的 View Controller 包含 UICollectionView。当我使用 performBatchUpdates 执行 Collection View 更新时,即使更新 block 已完成,也永远不会调用完成。

// Animate udpates
self.collectionView.performBatchUpdates({
      // is called 
}, completion: { _ in
      // never called
})

我觉得和collection view的离屏渲染有关。有人有类似问题的经验吗?我缺少什么让 UICollectionView 相信它在屏幕上?

最佳答案

我发现了问题。这完全取决于适当的时机。测试用例在调用完成之前完成, View Controller 被释放。

我通过设置加速了 Collection View 动画

viewController.view.layer.speed = 100 // speed up animations

并将测试用例的超时时间增加到 0.1 秒。现在一切都按预期进行。

关于ios - 关闭屏幕时未调用 UICollectionView performBatchUpdates 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137435/

相关文章:

swift - 是否应该将 Swift 类的实例分配给 `nil` 以查看反初始化器的运行情况?

ios - POST ios 中的 woocommerce_api_authentication_error

ios - 如何从 CNContactPickerViewController 获取选定的 contactProperty

ios - SDWebImage 缓存需要时间从 uicollectionview 单元中的缓存加载图像

Swift 5 CollectionView 通过长按单元格获取 indexPath

ios - 在 UITableView 中单击时更改 UIButton 颜色和文本

ios - Swift: UIImagePicker 可以自动打开上次拍摄的照片吗?

iphone - NSMutabledata byteswithnocopy 的问题

ios - 哦哦用户取消了Facebook登录。 -PARSE

ios - 在 Swift 中与两个 Collection View 同步滚动?