2012-06-06 6 views
2

왜 다음 코드가 실행되는 즉시 '완료'할까요?애니메이션 블록 - 즉시 실행 완료

[UIView animateWithDuration:0.3 
       animations:^{ 
         NSLog(@"Start"); 
       } 
       completion:^(BOOL finished){ 
        NSLog(@"done"); 
       } 
]; 
+0

아마도 애니메이션 블록에 애니메이션이 없기 때문일 수 있습니다. – scord

답변

8

실제로 아무 것도 애니메이트하지 않기 때문에 (NSLog는 움직일 수 없습니다). 개체를 애니메이션화해야합니다. 그렇지 않으면 완료 블록이 곧바로 호출됩니다. 아무 것도 움직이지 않으면 0.3 초의 지속 시간이 무시됩니다.

+0

그래, 나는 뭔가를 바꾸고 있는데, 똑같은 일이 일어난다. – Morkrom

3

아무 것도 움직이지 않기 때문에. 애니메이션 블록에서 일부 UIView의 값을 변경하면 0.3 초 ​​지연 후에 "done"이 올바르게 출력됩니다.

정확한 코드를 사용하여 5 초 지연을 테스트하고 애니메이션을 적용하여 확인하는 경우에만 테스트했습니다.

+0

좋아요 .. 뷰의 값을 변경하면 ... 같은 현상이 발생합니다. – Morkrom

관련 문제