2010-04-13 9 views
2

사용자가 메인 뷰를 누를 때 hidden으로 설정된보기가 있습니다. 페이드 인 (fade in)과 아웃 오브 페이즈 (out of exist)가 사라지기보다는보기가 부드럽게 보일 수 있도록보기가 필요합니다.오브젝트의 페이드 인 및 페이드 아웃

Heres는 내 코드 지금까지는 (그것은 터치 이벤트 내부의) :

[UIView beginAnimations:nil context:NULL]; 

if (!isShowing) { 
    isShowing = YES; 
    myView.hidden = NO 
} 
else { 
    isShowing = NO; 
    myView.hidden = YES 
} 

[UIView commitAnimations]; 

을하거나 그것을 단순화 :

if (!isShowing) { 
     isShowing = YES; 
     myView.hidden = YES; 
        //Needs to fade out here 


} 

    else { 
     isShowing = NO; 
     myView.hidden = NO; 
        //Needs to fade in here 

} 

답변

5

그냥 이런 식으로 코드를 포장

[UIView beginAnimations:nil context:NULL]; 

isShowing = !isShowing; 
myView.hidden = isShowing? NO : YES; 

[UIView commitAnimations]; 

UIViewsetAnimationDuration:, setAnimationCurve:, 보기가 페이드 인 및 페이드 아웃하는 방법을 사용자 정의하는 방법은 setAnimationBeginsFromCurrentState:입니다.

+0

흠 ... 작동하지 않습니다. UIView를 대체해야합니까? 나는 아직도 코코아에 새로운 있습니다. – nosedive25

+0

UIView는 메서드가있는 클래스입니다. 보기가 전혀 나타나지 않습니까? 당신은 그것이 존재하고 어떤 화면이든 화면의 하위보기라고 확신합니까? –

+0

예보기가 표시되고 기본보기의 하위보기입니다. 나는 [UIView setAnimationDuration : 5.0]을 시도했다. 운이 없다. – nosedive25

6

나는 결코 애니메이션으로 움직이는 것을 숨겨야했습니다. 대신 알파에 애니메이션을 적용하십시오.

+0

그것이 바로 내가하는 방법입니다. .alpha 속성을 숨기려면 1에서 0으로, 표시하려면 0에서 1로 가져갑니다. 그들을 beginAnimation 및 commitAnimation 블록으로 감싸는 것을 잊지 마십시오. – Jann

+0

또는 블록 양식 ('animateWithDuration : animations :')을 사용하십시오. –

+1

'숨김'은 부울 속성입니다. 애니메이션으로 만들 수 없습니다. 실제로 알파에 애니메이션을 적용하는 것이 올바른 방법입니다. –

관련 문제