2016-10-19 2 views
1

내 View Controller에 대한 스냅 샷 테스트를 사용하고 있습니다. 다음은 뷰 컨트롤러가 테스트에서 초기화되는 방식입니다.UICollectionView performBatchUpdates 완료가 화면 끄는 동안 호출되지 않았습니다.

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() 

내보기 컨트롤러에 UICollectionView가 포함되어 있습니다. performBatchUpdates를 사용하여 콜렉션 뷰 업데이트를 수행하면 업데이트 블록이 완료 되더라도 완료가 호출되지 않습니다.

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

나는 그것이 컬렉션보기의 화면 렌더링과 관련이 있다고 생각합니다. 다른 사람이 비슷한 문제에 경험이 있습니까? UICollectionView가 화면에 있다는 것을 납득시키기 위해 누락 된 점은 무엇입니까?

답변

0

문제점을 발견했습니다. 적절한시기에 관한 것이 었습니다. 완료되기 전에 테스트 케이스가 완료되고 뷰 컨트롤러의 할당이 해제되었습니다.

제가

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

설정함으로써 컬렉션 뷰 애니메이션 고속화 0.1 초로 테스트 케이스에 대한 타임 아웃을 증가. 모든 것이 예상대로 작동합니다.

관련 문제