按下后退按钮时的自定义动画 - iOS

Posted

技术标签:

【中文标题】按下后退按钮时的自定义动画 - iOS【英文标题】:Custom Animation when back button is pressed - iOS 【发布时间】:2015-04-04 04:04:20 【问题描述】:

我试图在用户按下 uiviewcontroller 导航栏的默认后退按钮(不是自定义按钮)时产生自定义效果。我试图在弹出视图之前将 uiview 向下移动到某个 Y 位置并让视图控制器消失。

我尝试了两种方法:

方法一

    - (void)viewWillDisappear:(BOOL)animated

  [super viewWillDisappear:animated];

  [UIView animateWithDuration:0.2 animations:^
    self.cvCell.frame = self.selectedCellFrame;
   completion:^(BOOL finished) 
  [UIView animateWithDuration:0.75
                     animations:^

                         [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
                         [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.navigationController.view cache:NO];
                      completion:^(BOOL finished) 

                         [self.navigationController popViewControllerAnimated:NO];
                     ];
    ];



方法二

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated


if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) 

    [UIView animateWithDuration:0.2 animations:^
       self.cvCell.frame = self.selectedCellFrame;
     completion:^(BOOL finished) 
       CATransition *transition = [CATransition animation];
       [transition setDuration:0.75];
       [transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
       [transition setType:kCATransitionReveal];
       [transition setSubtype:kCATransitionFromLeft];
       [transition setDelegate:self];
       [self.navigationController.view.layer addAnimation:transition forKey:nil];
     ];
  

在这两种情况下,视图都会在 UIView 上的动画启动之前消失。 对实现这一目标有何建议?

【问题讨论】:

【参考方案1】:

如果您在 ios 应用中使用 Storyboard,您可以尝试实现自定义转场动画。您可以重写方法prepareForSegue:sender: 来检查事务是否应该发生,重写方法perform: 来在屏幕上显示新的视图控制器。然后,您可以继承 UIStoryboardSegue 并在其中启用自定义动画iOS Docs

【讨论】:

我正在尝试从 B 弹出视图控制器 A。我使用自定义 segue 动画从 A 降落在 B 上(我确实使用故事板)。我是否必须创建另一个自定义 segue 才能弹出此视图控制器? 是的,如果“返回”按钮自动返回,它可能还需要重新配置。调查后prepareForSegue:sender: 仅在向前方向工作,向后移动使用prepareForUnwind:sender: 更多信息:http://spin.atomicobject.com/2014/12/01/program-ios-unwind-segue/

以上是关于按下后退按钮时的自定义动画 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

带有自定义后退按钮字体的错误大标题动画

如何在颤动中显示带有动画的自定义对话框?

iOS 编程:viewDidAppear 中的自定义按钮

从一个 UICollectionViewLayout 切换到另一个时的自定义动画?

使用LeftBarButtonItems ios中的自定义按钮创建默认后退按钮

按下向上按钮时的自定义 Activity 转换