按下后退按钮时的自定义动画 - 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的主要内容,如果未能解决你的问题,请参考以下文章
从一个 UICollectionViewLayout 切换到另一个时的自定义动画?