2014-01-27 4 views
0

개체가 사라져서 숨겨지기를 원합니다. 다음은 그것을 숨기지 만 페이딩이 보이지 않는다. 아마도 애니메이션이 아직 완성되는 동안 그것을 숨기기 때문일 것이다. 애니메이션이 완료 될 때까지 기다릴 코드를 작성하는 방법에 대한 조언이 있습니까?개체를 숨기기 전에 애니메이션 대기 완료

[UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5]; 

    [adviceBorder setAlpha:0]; 

    [UIView commitAnimations]; 

    adviceBorder.hidden=YES; 
+0

를 사용하여 아래의'animateWithDuration 주어진 코드를 넣을 수 있습니다 : 애니메이션 : 완료 :'방법을. –

답변

2

사용 블록 기반의 애니메이션과는이를 위해 블록을 사용할 수 있습니다 완료 블록에

[UIView animateWithDuration:0.5 
       animations:^{ 
        adviceBorder.alpha = 0; 
       } completion:^(BOOL finished) { 
        adviceBorder.hidden = YES; 
       }]; 
+0

화려한 - 감사합니다 – RGriffiths

+1

그냥 이것에 추가하려면; 알파가 0.02 미만으로 설정된 후에 숨김으로 설정할 이유가 없습니다. 렌더링되지 않고 터치 입력이 없습니다. 이 방법을 사용하면 숨김을 NO로 설정 한 후 알파를 1로 되돌려 놓아야한다는 사실을 기억해야하며 UI의 버그 가능성이 높아집니다. –

0

을 숨기는을한다.

애니메이션을 투입 후에는

double delayInSeconds = 0.5; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    //code to be executed on the main queue after delay 
    adviceBorder.hidden=YES; 
}); 
+0

dispatch_after를 피하십시오.이 경우에는 괜찮 았지만 경쟁 조건이없는 정의되지 않은/무작위로 설정된 앱을 만들면 –