2

ビューコントローラーにスナップショットテストを使用しています。これは、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 を使用してコレクション ビューの更新を実行すると、更新ブロックが終了しても完了が呼び出されません。

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

コレクションビューのオフスクリーンレンダリングに関連していると思います。誰かが同様の問題を経験したことがありますか? 画面上にあることを UICollectionView に納得させるには何が欠けていますか?

4

1 に答える 1

0

問題が見つかりました。それはすべて適切なタイミングについてでした。完了が呼び出される前にテスト ケースが終了し、View Controller の割り当てが解除されました。

設定でコレクションビューのアニメーションを高速化しました

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

テスト ケースのタイムアウトを 0.1 秒に増やしました。すべてが期待どおりに機能するようになりました。

于 2016-10-20T09:41:46.087 に答える