2013-03-24 3 views
3

데이터를 표시하기위한 사용자 정의 논리가있는보기 컨트롤러 (상속 자 UIViewController)가 있습니다. 새로운 뷰 컨트롤러 (동일한 유형의)를 초기화하고[self.navigationController pushViewController:next animated:NO] (다음은 새로 인스턴스화 된 컨트롤러)를 사용하여 표시 할 수 있으며 "뷰 스택"경험을 생성하고 탐색 컨트롤러 기본 뒤로 버튼을 사용하여 탐색합니다 스택.iOS : 뒤로 버튼 전환 애니메이션 사용자 정의

이제 pushViewController:animated:을 호출하기 전에 [self.navigationController.view.layer addAnimation:animation forKey:nil]을 호출하여 전환 애니메이션을 사용자 정의 할 수 있습니다. 이는 뷰의 "스택 다운"에 대해 훌륭하게 작동합니다.

그러나 스택의 위쪽 탐색은 기본 뒤로 버튼을 사용하여 기본 방식으로 이루어 지므로 사용 된 전환은 사용자 정의 애니메이션과 일치하지 않는 기본 슬라이드 - 왼쪽 애니메이션입니다.

어떻게 전환 애니메이션을 사용자 정의 할 수 있습니까?

편집 :

나는 아이디어가 여기에 주어진했다과 함께했다 :

UIBarButtonItem *back = [[UIBackButtonItem alloc] initWithTitle:@"\U000025C0\U0000FE0E" style:UIBarButtonItemStylePlain target:self action:@selector(back:)]; 
[self.navigationItem setLeftBarButtonItem:back] 

그리고 전환 :

- (IBAction)back:(id)sender { 
    CATransiotion *animation = [CATransition animation]; 
    animation.duration = 0.3f; 
    amimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
    animation.type = kCATransitionMoveIn; 
    [self.navigationController.view.layer addAnimation:animation forKey:nil]; 
    [self.navigationController popViewControllerAnimated:NO]; 
} 

유일한 단점은 새로운 뒤로 버튼의 모양이 나는 그걸로 기꺼이 살고 있습니다. 답변에 대한

감사합니다 :) 정말 모달 뷰 컨트롤러를 추천 할 것입니다 전환의 유형에 대해

답변

3

난 당신이 예를 들어, 버튼을 사용자 정의를 다시 만들고, 거기에 애니메이션을 첨부해야 할 것 같아요.

- (IBAction) back:(id)sender 
{  
    [UIView transitionWithView:self.navigationController.view 
         duration:0.5 
         options:UIViewAnimationOptionTransitionFlipFromLeft 
        animations:^{ [self.navigationController popViewControllerAnimated:NO]; } 
        completion:NULL]; 
} 
+0

나는 맞춤형 뒤로 가기 버튼을 사용하는 방법이라고 생각하지만 코드에서이를 수행하려고합니다. 나는 Objective C를 처음 접했지만, 지금까지 사용하지 않은 .xib 파일을 빌드하는 것과 관련이 있다는 것을 알고 있습니다. –

1

This code got from this Queston.

는 시스템이 디자인 된 방법을 이잖아.

네가 네비게이션 컨트롤러를 사용하고 싶다고해도 다소 추한 일이지만.

[CATransaction begin]; 
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; 

CATransition *transition = [CATransition animation]; 
[transition setType:kCATransitionFade]; 
[self.navigationController.view.layer addAnimation:transition forKey:@"someAnimation"]; 

[self.navigationController popViewControllerAnimated:YES]; 
[CATransaction commit]; 

CATransaction은 모든 표준 애니메이션을 비활성화합니다. CATransition은보기가 스왑 될 때 탐색 컨트롤러 계층에 페이드 전환을 추가합니다 (이 경우 팝업 된 viewcontroller보기 제거).

또한 참조하십시오이 How to change the Push and Pop animations in a navigation based app

0

단순히 뒤로 버튼을 이전보기 컨트롤러로 되돌리려는 경우. 코드없이 이것을하는 것이 더 쉽습니다. 그 대신 컨트롤을 뒤로 버튼에서 이전보기 컨트롤러로 드래그하십시오. (나는 모달 액션을 선호한다.)

-(void)viewWillDisappear:(BOOL)animated { 
CATransition *anim = [CATransition animation]; 
anim.duration = 1; 
anim.type = @"cube"; 
anim.subtype = @"fromLeft"; 
[super viewWillDisappear:animated]; 
[self.navigationController.view.layer addAnimation:anim forKey:@"an"]; 

}

을 그리고 그것은 잘 작동 : 그것은 더 코드

1

내가이 좋아해요을 포함하지 않기 때문에 이것은 간단하게!

관련 문제