【问题标题】:Custom Animation when back button is pressed - iOS按下后退按钮时的自定义动画 - 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 上的动画启动之前消失。 对实现这一目标有何建议?

【问题讨论】:

    标签: ios objective-c uinavigationcontroller pushviewcontroller


    【解决方案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/
    猜你喜欢
    • 1970-01-01
    • 2016-10-04
    • 2013-09-20
    • 2016-04-30
    • 1970-01-01
    • 2016-09-26
    • 2021-08-17
    • 1970-01-01
    • 2014-02-16
    相关资源
    最近更新 更多