2010-08-09 3 views
2

이 코드는 서브 클래 싱 된 uiview의 touchesended 메서드에서 실행되지만 애니메이션을 적용하지는 않지만 즉시 배경색을 변경합니다. 뭐가 잘못 되었 니? 당신이 그것을 호출하는 경우,이 애니메이션을 시작 있도록하지만, 바로이 시점 이후의 코드를 실행합니다 -iPhone UIView 애니메이션 지속 시간은 즉시 작동합니다.

self.backgroundColor = [UIColor blackColor]; 
    [UIView beginAnimations:nil context:NULL]; 

    [UIView setAnimationDuration:20]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
    if (score < .40) { 
     self.backgroundColor = [UIColor redColor]; 
    } else { 
     self.backgroundColor = [UIColor greenColor]; 
    } 
    [UIView commitAnimations]; 
+0

에서 호출 할 때 작동합니까? 하위 클래스 또는 서브 클래스 외부의 다른 장소? – mvds

+1

정말 animatable 색상을 변경하고 ??? – lukya

+0

가능성은 낮지 만, '20'은 플로트로 캐스팅되는 것이 아니라 해석 될 수 있습니다. 20.0을 사용해보십시오. 또한 색상이 Apple 개발자 문서의 '애니메이션 속성'인지 다시 확인하십시오. – mtrc

답변

1

[UIView commitAnimations] 방법은 차단되지 않습니다. 그 아래에 배경색을 변경하는 코드가 있으면 애니메이션이 손상됩니다.

그래도 문제가 해결되지 않으면 다른 속성에 애니메이션을 적용 해보십시오. 머리 위치 상단에서 벗어났습니다. & alpha은 애니메이션 가능하지만 색상이 확실하지 않습니다. (알파는 단지 float 값이며, 중심은 CGPoint입니다. 둘 다 기본 요소입니다. 그러나 UIColor은 참조 된 유형이며 UIView는 포인터를 움직이는 방법을 알지 못할 수 있습니다.)

관련 문제