我将如何开始复制Apple在iOS 7中默认使用的自定义视图控制器转换?

Dou*_*ith 19 objective-c uiviewcontroller uiview ios ios7

使用iOS 7的自定义视图控制器转换,我希望实现类似于iOS 7中Apple默认视图控制器转换的视觉效果.

(可以通过向左滑动窗口将视图控制器从左侧滑动到右侧的视图控制器,其中顶视图控制器从阴影的顶部滑出,导航栏移动.)

在此输入图像描述

不过,我在实现这个方面遇到了很多困难.自定义视图控制器上的大多数教程都使用与默认视图非常不同的效果,以显示API的功能,但我想复制这个.

在我的实现子类中,<UIViewControllerAnimatedTransitioning>我有以下代码用于交互式动画:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
    UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];

    [transitionContext.containerView addSubview:toViewController.view];
    [transitionContext.containerView addSubview:fromViewController.view];

    fromViewController.view.layer.shadowOffset = CGSizeMake(0.0, 0.0);
    fromViewController.view.layer.shadowColor = [UIColor blackColor].CGColor;
    fromViewController.view.layer.shadowRadius = 5.0;
    fromViewController.view.layer.shadowOpacity = 0.5;

    [UIView animateWithDuration:[self transitionDuration:transitionContext] delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{
        CGRect newFrame = fromViewController.view.frame;
        newFrame.origin.x = CGRectGetWidth(fromViewController.view.bounds);

        fromViewController.view.frame = newFrame;
    } completion:^(BOOL finished) {
        [transitionContext completeTransition:!transitionContext.transitionWasCancelled];
    }];
}
Run Code Online (Sandbox Code Playgroud)

然而,阴影代码使它显着滞后(即使我使用新snapshot方法),我根本无法弄清楚如何操纵导航栏.

有没有人试图做类似的事情,并能够提供示例代码?

用于测试的示例项目,如果您愿意:http://cl.ly/0B3q1b390x0D

感谢objc.io获取基本代码.

MrH*_*aze 0

看看ECSlidingViewController我已经使用过它几次了,如果你了解它是如何工作的,你可以轻松地实现类似的东西。

如果你想重新发明轮子,我的回答是没有用的,抱歉。