2014-11-25 106 views
-3

有方法来创建自定义动画? - 例如:如果我有一个UIView放在屏幕上的点(100,100),我想创建动画,UIView移动到点(200,200)的动画是1秒。 我不想在动画代码中使用此类型:创建自定义动画

[UIView animateWithDuration:1 animations: ^{ 
     myView.center = CGPointMake(200, 200); 
    }]; 

我要求不同的方式动态显示。

+0

为什么不使用这种类型的代码?有什么你无法完成的吗? – 2014-11-25 15:55:41

回答

0

是的,有很多不同的方式做动画。您发布的代码是最干净,最简单的方法。

如果您使用自动版式,那么你应该把水平和垂直位置制约你的看法,将它们连接到插座,动画约束的价值,而不是直接移动视图。

您还可以使用核心动画和视图的层直接动画。看看CAAnimation类家庭。特别是你应该看看CABasicAnimation。然而,使用CAAnimation对象很棘手,有很多问题。

为什么你不希望使用animateWithDuration:animations:方法?该方法animateWithDuration:delay:options:animations:completion:'有一个“长形式”,它提供了更多的控制。另外还有一个新的基于关键帧动画视图的方法: animateKeyframesWithDuration:delay:options:animations:completion:以及动画弹簧效应,和其他几个人。

我通常的做法是使用UIView动画,如果我可以做这个工作,并且只有下拉到较低级别的CAAnimation动画,如果有什么我不能做的基于视图的动画。 (下面的视图为基础的动画方法生成CAAnimation对象,并将它们应用到您的视图的图层,但有一个更容易使用。)

1

我不明白为什么你不想使用UIView动画,或者你可以用于例如

CABasicAnimation *animation = [CABasicAnimation animation]; 
animation.keyPath = @"position.x"; 
animation.fromValue = @0; 
animation.toValue = @100; 
animation.duration = 1; 

[myView.layer addAnimation:animation forKey:@"basic"];