2016-04-01 10 views
1

CABasicAnimationを使わずにUIImageViewを右から左にアニメーション化する方法はありますか?私はそれにトラブルがあり、私はそれを行う別の方法を探したいと思います。Endless runner imageview animation(SpriteKitなし)

「地面」の画像は1200(幅)×33(高さ)で、無限の繰り返しで無限のランナーをシミュレートする右から左に移動したいと考えています。

CALayer/CABasicAnimationなしでどうすれば達成できますか?

ありがとうございました!

+0

UIImageViewを移動するだけですか? –

+0

実際には、CABasicAnimationを使わずに無限に走る地面をシミュレートする方法です。私は資産をUIImageViewに持っています。 – iDeC

+0

あなたは1つのUIImageView内で使用するいくつかの画像を持っているか、1つの画像しか持たず、UIImageViewを移動して目的の効果を達成する必要がありますか? –

答えて

1

UIViewには、アニメーション、特に動画の再生を許可する方法がたくさんあります。

あなたはこのようなあなたのImageViewのを移動することもできますので、あなたは2つの画像ビューを必要とする

[UIView animateWithDuration:10 
       animations:^{ 

        yourImageView.frame = frame_you_need; 
       } 
       completion:^(BOOL finished){ 

        //start from the very beginning 
        //set initial frame to the image view and run the 
        // animation again 
       }]; 

。開始位置を設定し、両方でアニメーションを実行し、アニメーションの完了時にアニメーションをもう一度繰り返します。それはそれです

更新

私はこの機能を自分で実装することに決めました。ここに私のアニメーション機能がどのように見えるかです:

- (void)runView:(UIView *)aView withStartPosition:(CGPoint)startPosition 
{ 
aView.center = startPosition; 

[UIView animateWithDuration:3 
         delay:0 
        options:UIViewAnimationOptionCurveLinear 
       animations:^{ 

        CGPoint newPosition = CGPointMake(aView.center.x + aView.frame.size.width, aView.center.y); 
        aView.center = newPosition; 
       } 
       completion:^(BOOL finished){ 

        [self runView:aView withStartPosition:startPosition]; 

       }]; 
} 

この機能を実証プロジェクトはここにある:UIView.animateWithDurationは、実装が時々厄介なのでGithub

+0

驚くばかり!私がそれらを見ることができればGitHubのプロジェクトは私に多くを助けました、私は良いことを理解します:)ありがとう! – iDeC

0

、私は簡単に系列やグループで、アニメーションを実行する方法を作成しました。あなたはここにチェックアウトすることができます:GitHub - UIAnimation 。それはSKActionのUIKitバージョンです。

//imgView is your UIImageView 
let positioning = UIAnimation.moveTo(CGPointMake(view.frame.width+imgView.frame.width/2,view.frame.height/2), duration: 0) //put the UIView on the right side of the screen 
let movement = UIAnimation.moveTo(CGPointMake(-imgView.frame.width/2),view.frame.height/2), duration: 5) //moves the UIView to the left side of the screen 
let animation = UIAnimation.sequence([positioning,movement]) //do them sequentially 
let foreverAnimation = UIAnimation.repeatAnimationForever(animation) //repeat the sequence forever 
imgView.runAnimation(foreverAnimation) //start the animation 

ここで興味深いのは、あなたが変数に「foreverAnimation」を保存して、あなたがしたいすべてのimageViewsのためにそれを再利用できることです:あなたがなりたいものを実装するための方法を、このUIAnimationを使用

動くあなたは単にrunAnimationを呼び出す必要があります。

希望します。スクリプトに関する問題や提案がある場合は、私に連絡してください。)

+0

それはSwiftでのみ利用できますか? – iDeC

+0

ああ、申し訳ありませんが、それは私の悪いobj-cだったことを認識していませんでした。 obj-cバージョンを作成します –

+0

スウィフトコードをobjective-c https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.htmlにインポートすることはできます –