在Objective C中创建自定义动画

时间:2014-11-25 14:39:19

标签: ios objective-c animation uiview

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

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

我要求以不同方式制作动画。

2 个答案:

答案 0 :(得分: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"];

答案 1 :(得分:0)

是的,有很多不同的动画制作方法。您发布的代码是最简洁,最简单的方法。

如果您正在使用AutoLayout,那么您应该在视图上放置水平和垂直位置约束,将它们附加到出口,并为约束的值设置动画,而不是直接移动视图。

您还可以使用Core Animation并直接为视图层设置动画。看看CAAnimation类系列。特别是你应该看看CABasicAnimation。然而,使用CAAnimation对象很棘手,但有很多陷阱。

为什么不想使用animateWithDuration:animations:方法?该方法animateWithDuration:delay:options:animations:completion:'的“长形式”提供了更多控制。还有一个新的基于关键帧的视图动画方法: animateKeyframesWithDuration:delay:options:animations:completion:以及带有弹簧效果的动画,以及其他一些动画。

我通常的方法是使用UIView动画,如果我可以做到这一点,并且只有在我不能对基于视图的动画做的事情时才下拉到较低级别的CAAnimation动画。 (在封面下,基于视图的动画方法生成CAAnimation对象并将它们应用到视图的图层,但有一些更容易使用。)