2014-11-25 147 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"];