CAAnimation이 완료된 후 완료 블록을 실행하려고합니다. 그러나 애니메이션이 완료되기 전에 애니메이션 블록이 호출 된 것 같습니다. 애니메이션은 여전히 올바르게 발생합니다.CATransaction 완료가 즉시 호출됩니다.
[CATransaction begin];
[self.view.layer addAnimation:self.dropAndBounceAnimation forKey:@"appearance"];
[CATransaction setCompletionBlock:completionBlock];
[CATransaction commit];
dropAndBounceAnimation은 고정 된 지속 시간을 사용하여 position.y의 CAKeyFrameAnimation입니다.
예는 [문서]에 따라, 인 (https://developer.apple.com/library/ Mac/DOCUMENTATION/GraphicsImaging/Reference/CATransaction_class/Introduction/Introduction.html # // apple_ref/occ/clm/CATransaction/setCompletionBlock :) : "주 스레드에서 즉시 호출되도록 보장되는 완료 블록 객체 이 트랜잭션 그룹에 의해 이후 추가 된 모든 애니메이션 *이 완료되었습니다 (또는 제거되었습니다). " 핵심 부분은 "이후에 추가됨"입니다. – albertamg
@albertamg 그러나 현재 트랜잭션 그룹이 커밋되기 전에 애니메이션이 추가되지 않으면 (또는 완료 블록이 다른 값으로 설정되면) 블록이 즉시 호출됩니다. ' – iwasrobbed
@iWasRobbed yes, 애니메이션을 트랜잭션 그룹에 추가 한 후에 애니메이션이 완료되기 전에 블록이 호출되는 이유는 무엇입니까? – albertamg