iOS - 使用CATransition在两个UIView之间正确制作动画

时间:2013-02-17 04:09:52

标签: ios uiview uiviewanimationtransition catransition

我的屏幕上已经有了一个UIView,我希望从四个方向之一(左,右,上,下)“滑入”一个新的UIView,具体取决于我检测到的扫描类型。获取swipegesture信息已经完成而不是问题但现在,让我们说如果我向左滑动然后我想要另一个UIView实例从右边“滑入”。

具体来说,当新的UIView从右侧滑入时,旧的UIView开始滑出视图向左滑动,直到它完全脱离视图。换句话说,我想有效果,你可以在动画中看到两个UIViews,直到原来的UIView不再可见。在iPad上可以看到相同类型的效果,例如,当您在主屏幕上并向左滑动时 - 当您的主屏幕滑出视图时,它会从右侧滑动到另一个应用程序图标屏幕中剩下。我想要实现的唯一警告是你不能阻止中途过渡。

无论如何,这里是我到目前为止的代码 - 我认为我很接近,但希望得到一些帮助,或许可以完成我需要在这里完成的任务:

    UIView *newView = [[UIView alloc] init];
    newView.frame = CGRectMake(0, 0, TileView.frame.size.width, TileView.frame.size.height);
    [TileView addSubView:view];
    CATransition *transitionAnimation = [CATransition animation];
    [transitionAnimation setDuration:1];
    [transitionAnimation setType:kCATransitionPush];
    [transitionAnimation setSubtype:kCATransitionFromRight];
    [transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

UIView TileView是我的viewController的子视图。是否有任何其他设置可以为newView做,以便所有内容匹配到屏幕位置?我认为 KCATransitionPush是我正在寻找的动画类型但不是100%肯定。

对我在这里缺少的任何帮助都会有所帮助。

1 个答案:

答案 0 :(得分:0)

尝试设置这两个属性....

transitionAnimation.fromValue=[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0.0, 0.0, 0.0)];
transitionAnimation.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(excursion, 0.0, 0.0)];