【问题标题】:iOS 6 slide push controller animation in iOS 7iOS 7 中的 iOS 6 滑动推送控制器动画
【发布时间】: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”而终止应用,原因:“将根视图控制器添加为视图控制器的子级:”

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

【问题讨论】:

    标签: ios6 uiviewcontroller ios7 uinavigationcontroller pushviewcontroller


    【解决方案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:] - 我想这个方法应该可以工作
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多