导航控制器中的后退按钮动画

vil*_*ilo 4 iphone navigationcontroller

向下钻取时,CATransitions可用于为导航控制器中的过渡设置动画.但是,当使用后退按钮og导航控制器(返回)时,动画仍然会滑出.有谁知道如何将CATransition附加到导航控制器的后退按钮?谢谢.

用于在"向下钻取"时动画的代码:

CATransition *transition = [CATransition animation];
transition.duration = 1;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromTop;
transition.delegate = self;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
Run Code Online (Sandbox Code Playgroud)

sha*_*fax 7

无需创建自定义按钮......您可以简单地执行以下操作:

- (void)viewWillDisappear:(BOOL)animated
{
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
        // back button was pressed.  We know this is true because self is no longer
        // in the navigation stack.  
        CATransition *transition = [CATransition animation];
        [transition setDuration:0.75];
        [transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        [transition setType:@"oglFlip"];
        [transition setSubtype:kCATransitionFromLeft];
        [transition setDelegate:self];
        [self.navigationController.view.layer addAnimation:transition forKey:nil];
    }

    [super viewWillDisappear:animated];
}
Run Code Online (Sandbox Code Playgroud)

编辑:您必须首先添加石英框架才能使用CATransition


Man*_*ole 6

要将动画添加到后退按钮,您必须创建自己的后退按钮,并在后退按钮操作上指定所需的动画.

  1. 在导航栏中添加后退按钮:将此行添加到viewDidLoad方法:

    self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(back)];
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在back方法中添加以下代码:

    CATransition *transition = [CATransition animation];
    transition.duration = 1;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromBottom;
    transition.delegate = self;
    [self.navigationController.view.layer addAnimation:transition forKey:nil];
    [self.navigationController popViewControllerAnimated:YES];
    
    Run Code Online (Sandbox Code Playgroud)