2012-12-14 3 views
4

나는 litle 문제가 있습니다. pushviewcontroller가 있고 그것은 애니메이션을 사용합니다. 내 코드는 다음과 같다 :푸시 된 UIViewController 팝업 애니메이션을 설정하는 방법

[UIView beginAnimations: @"Showinfo"context: nil]; 
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.75]; 
    [self.navigationController pushViewController:dtv animated:YES]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
    [UIView commitAnimations];` 

그것은 잘 작동하지만 view을 누르면 내가 돌아갈 때,이 애니메이션을하지 않습니다. 그래서 돌아갈 때 동일한 애니메이션을 수행하는 방법을 모르겠습니다. 누구든지 나를 도울 수 있습니까? 감사!

+1

,이 사용할 수 있습니까? –

+0

그냥 새로운 viewcontroller하지만 애니메이션과 함께 밀어. 그리고 제가 돌아 가면, 같은 시각을 보입니다. – andres

답변

2

이것은 항상이 작업을 완료 한 방법입니다. 팝 들어

[UIView beginAnimations: @"Showinfo"context: nil]; 
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.75]; 
    [self.navigationController pushViewController:dtv animated:YES]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
    [UIView commitAnimations];` 

: 나는 아직도이 내가 가서으로 업데이트거야로부터 많은 피드백을 얻을

[

UIView beginAnimations: @"Showinfo"context: nil]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:0.75]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations]; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDelay:0.375]; 
[self.navigationController popViewControllerAnimated:NO]; 
[UIView commitAnimations]; 

푸시를 들어

어쨌든 애니메이션을하기 위해 Apple 권장 방식 인 애니메이션 블록을 사용하십시오. 팝 들어

MainView *nextView = [[MainView alloc] init]; 
[UIView animateWithDuration:0.75 
         animations:^{ 
          [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
          [super pushViewController:nextView animated:NO]; 
          [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
         }]; 

: 푸시를 들어

[UIView animateWithDuration:0.75 
         animations:^{ 
          [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
          [UIView setAnimationTransition:transition forView:self.navigationController.view cache:NO]; 
         }]; 
[self.navigationController popViewControllerAnimated:NO]; 
+0

훨씬 좋습니다! ^^ – andres

3

대안으로, 당신은 당신이 실제로 통해 무엇을하려고

CATransition* transition = [CATransition animation]; 
transition.duration = 0.5; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type = kCATransitionFade; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade 
//transition.subtype = kCATransitionFromTop; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom 
[self.navigationController.view.layer addAnimation:transition forKey:nil]; 
[[self navigationController] popViewControllerAnimated:NO]; 
+0

예, 작동합니다! 당신의 도움을 주셔서 감사합니다! – andres

+0

물론 그렇습니다. – andres

관련 문제