iOS 7 中的 iOS 6 滑动推送控制器动画

Posted

技术标签:

【中文标题】iOS 7 中的 iOS 6 滑动推送控制器动画【英文标题】:iOS 6 slide push controller animation in iOS 7 【发布时间】:2014-02-03 08:23:43 【问题描述】:

我正在创建一个应用程序,并希望在 ios 7 中使用相同的 iOS 6 样式从右到左滑动推送控制器动画。iOS 7 更改了默认控制器推送动画。

我怎样才能得到以前的动画?

如果您发现此问题重复,请在发表任何评论之前给我答案链接。

感谢您的宝贵时间。

让我再澄清一件事。

我有一个控制器,在 iOS 7 中有一个自定义视图大小 (320x400)。我使用 UINavigationController (_homeInnerNavigationCtrl) 将添加更多控制器 init,而这个 _homeInnerNavigationCtrl.view 是自定义视图中的子视图。所以当我尝试使用这段代码时:

        CATransition *transition = [CATransition animation];
    transition.duration = 0.5;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromRight;
    [currentViewCtrl.view.layer addAnimation:transition forKey:nil];

    [currentViewCtrl presentViewController:targetCtrl animated:NO completion:^
        [_homeInnerNavigationCtrl pushViewController:targetViewCtrl animated:NO];
    ];

它让我崩溃: 由于未捕获的异常“UIViewControllerHierarchyInconsistency”而终止应用,原因:“将根视图控制器添加为视图控制器的子级:”

希望您能理解描述。谢谢。

【问题讨论】:

【参考方案1】:

在呈现控制器时使用此代码:

CATransition *transition = [CATransition animation];
transition.duration = 0.5;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[self.view.window.layer addAnimation:transition forKey:nil];

[self presentModalViewController:viewController animated:NO];

当您解雇时,请使用以下代码:

CATransition *transition = [CATransition animation];
transition.duration = 0.5;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
[self.view.window.layer addAnimation:transition forKey:nil];

[self dismissModalViewControllerAnimated:NO];

【讨论】:

感谢您的回复,但 presentModalViewController 已弃用是 iOS 6,我正在使用 iOS 7。 @Jack_iPhone - 你可以使用 [self presentViewController: animated: completion:] - 我想这个方法应该可以工作

以上是关于iOS 7 中的 iOS 6 滑动推送控制器动画的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 在 iOS 7 中推送动画不流畅

推送 UITabBarController 导致 UITabBar 在 iOS 7 中的动画期间是透明的

我们如何在 iOS 11 中实现 App Store 的 Today 功能中的新推送视图控制器动画

iOS 7.1 滑动解锁文字动画

在 iOS 9 上使用 NavigationController 进行推送动画的自定义转换

iOS 8:UINavigationController 弹出没有动画然后推送