代码之家  ›  专栏  ›  技术社区  ›  Tom Irving

uiview动画与核心动画

  •  3
  • Tom Irving  · 技术社区  · 14 年前

    我正在尝试动画视图滑入视图和反弹一旦它击中屏幕的一侧。

    我正在做的幻灯片的一个基本示例如下:

    // The view is added with a rect making it off screen.
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:0.07];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    [theView setFrame:CGRectMake(-5, 0, theView.frame.size.width, theView.frame.size.height)];
    [UIView commitAnimations];
    

    然后在didstopselector中调用更多动画以产生反弹效果。问题是,当多个视图被设置动画时,反弹会变得不平稳,而且,好吧,不会再反弹了。

    在我开始阅读如何在核心动画中实现这一点之前,(我理解这有点困难),我想知道使用核心动画而不是uiview动画是否真的有优势。如果没有,我能做些什么来提高性能吗?

    1 回复  |  直到 9 年前
        1
  •  6
  •   Eiko    14 年前

    使用核心动画(基于层),您可以做很多高级的事情,比如3D动画(将视图嵌入3D空间)。

    不过,uiview动画功能非常强大,在拥有足够的动画之前,不应该成为性能瓶颈。我在代码中只看到一个示例,它的持续时间非常短。实际上,您几乎可以立即设置帧属性(70 ms是14 fps)。您应该考虑uiview动画的开始、结束和整个距离的持续时间-通常是0.2秒到几秒。它的设计并不是为了一个接一个地触发微观动画。