사용자 정의 segue를 사용하여 UIViewController 사이에 간단한 푸시 애니메이션을 추가하려고합니다.UIGavigationController없이 Segue 애니메이션 푸시
탐색 컨트롤러를 사용하지 않을 때까지 탐색 컨트롤러와 잘 작동 발견
대답을하지만, 실패의 (a은 UINavigationController를 사용하여 내 컨트롤러를 변환하지 않고). 7/5/12
#import "SFCustomSegue.h"
#import "QuartzCore/QuartzCore.h"
@implementation SFCustomSegue
-(void)perform {
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
CATransition* transition = [CATransition animation];
transition.duration = 4.0;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[sourceViewController.view.layer addAnimation:transition forKey:kCATransition];
[sourceViewController presentViewController:[self destinationViewController] animated:NO completion:nil];
}
만약에 (ZHCustomSegue.m) Zakir에
내 사용자 정의로 자연스럽게하는 .m 덕분에 (난 아직도 스택 오버플로 여기에 본 적이 다른 답변을 읽고 노력하고 있어요) 나는 Zakir의 원래 예에 따라 네비게이션 컨트롤러를 사용하고 함께 지난 2 개 라인을 교체 :
[sourceViewController.navigationController.view.layer addAnimation:transition
forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
의미가 있습니다 ....
애플의 문서는 말한다 (통지하지 탐색 컨트롤러 및 사용하고 odal segue) :
- (void)perform
{
// Add your own animation code here.
[[self sourceViewController] presentModalViewController:[self destinationViewController] animated:NO];
}
작동하지 않으면 애니메이션이 없습니다. Zakir의 코드에서 4.0 초 사용하면 4.0 초가 걸리고 원하는 애니메이션을 얻습니다. 물론, 내비게이션 컨트롤러를 사용하면 푸시 전환이 기본 설정입니다. 이 코드에서는 애니메이션이 없으며 0 초가 걸립니다.
누구나 UIViewControllers에서 작동하도록 맞춤형 segue 애니메이션을 얻었습니까?
누군가가 완성 블록을 사용하여 이것을 재 작업 할 수 있다면 좋겠지 만이 방법이 효과적입니다. –