2015年10月19日月曜日

UIViewのアニメーション方法いろいろ

種類があるようなので、気づいたら追記する形でまとめていく。

UIView.beginAnimations()

beginAnimations()とcommitAnimations()ではさむタイプ
メソッド前にアニメ前の状態を設定しておき、Durationの秒数かけてbeginAnimationsとcommitAnimationsの間に書かれた(AnimationCurveやDurationは設定なので別として)状態にアニメーションする。
centerなどの位置や、alphaチャネルも変化できる。
print文はアニメが始まってすぐに表示される。

        image.center = CGPointMake(0, 0)

        UIView.beginAnimations("imageMove", context: nil)
        UIView.setAnimationCurve(UIViewAnimationCurve.Linear)
        UIView.setAnimationDuration(10.0)
        image.center = CGPointMake(-50, 100)
        UIView.commitAnimations()
        print("アニメ終わり")

UIView.animationWithDuration()

クロージャを使うタイプ
メソッド前にアニメ前の状態を設定しておき、Durationの秒数かけて最初のクロージャに書かれた状態にアニメーションする。
centerなどの位置や、alphaチャネルも変化できる。
print文はアニメが終了後に表示される。

        image.center = CGPointMake(0, 0)
        
        UIView.animateWithDuration(10.0,
            delay: 0,
            options: UIViewAnimationOptions.CurveLinear,
            animations: { () -> Void in
            self.image.center = CGPointMake(-50, 100)
            }) { (Bool) -> Void in
                print("アニメ終わり")

        }

UIImageViewのパラパラアニメ

各フレームのコマを配列に用意しておき、それをstartAnimating()で開始する。
RepeatCountは繰り返しの回数で、0の場合無限に繰り返し。
途中で終了する際はanimeImage.stopAnimating()。
終了後は先に設定しておいたUIImage(ここでは"normalImage")になる。
前述のUIViewのアニメーションと組み合わせ、パラパラアニメしながら位置や大きさを変化などもできる。

                //最初にアニメ終了後に表示するimageを設定しておく
                animeImage.image = UIImage(named: "normalImage")
                //アニメのコマ設定
                let imageArray:[UIImage] = [
                    UIImage(named: "animeImage1")!,
                    UIImage(named: "animeImage2")!,
                    UIImage(named: "animeImage3")!,
                    UIImage(named: "animeImage4")!
                ]
                animeImage.animationImages = imageArray
                animeImage.animationDuration = 2.0
                animeImage.animationRepeatCount = 1
                animeImage.startAnimating()

0 件のコメント:

コメントを投稿