2011-01-06 5 views
0

사용자가 버튼을 누를 때 UIView가 화면 맨 아래에서 슬라이드하는 UINavigationController가 있습니다.kCATransitionMoveIn을 사용하여 UIView에서 슬라이딩 할 때의 글리치

뷰의 "숨김"속성을 NO로 설정 한 직후에 애니메이션이 이미 끝난 것처럼 UINavigationController의보기가 한 프레임에 완전히 표시됩니다.

은/나타낸다 코드 뷰 숨겨이다

- (void)showGUI: (bool)show 
{ 
CATransition *transition = [CATransition animation]; 
transition.duration = 0.5; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 

if (!show) 
{ 
    transition.type = kCATransitionReveal; 
    transition.subtype = kCATransitionFromBottom; 
} 
else 
{ 
    transition.type = kCATransitionMoveIn; 
    transition.subtype = kCATransitionFromTop; 
} 

[navController.view.superview.layer addAnimation:transition forKey:nil]; 

navController.view.hidden = !show; 
} 

답변

2

CATransition 애니메이션은 사용자가 애니메이션을 추가 층으로부터 제거/층이 추가 될 때 적용된다. 숨겨진 속성을 토글하는 것이 작동하지 않으면 대신보기를 제거하십시오.

+0

사실이 아닙니다. – zrxq

+0

이 경우 토글 숨김이 작동하지 않습니다. 이유를 제시하지 않았습니다. 내 솔루션이 작동하고 코멘트를 업데이트했습니다. 다음에 더 건설적이되도록 노력하십시오. – logancautrell

+0

OP의 문제는 무엇인지 전혀 알지 못하지만 경험상 '숨겨진'전환은 'CATransition'으로 완벽하게 작동합니다. – zrxq

관련 문제