コース: Objective-C 基本講座

今すぐコースを受講しましょう

今すぐ登録して、23,200件以上登録されている、業界エキスパート指導のコースを受講しましょう。

UIViewをアニメーション付きで移動させる

UIViewをアニメーション付きで移動させる - Objective-Cのチュートリアル

コース: Objective-C 基本講座

UIViewをアニメーション付きで移動させる

このレッスンでは UIView の属性を アニメーション付きで 変更する方法を学習します 今動かしているのは赤い画面を タップした位置に移動させるプログラムです UITapGestureRecognizer を セルフビューに登録し locationIninView を使って タップ位置を取り出して その位置を赤い画面の UIView のセンタープロパティに 設定することで移動させています 赤い画面の UIView は bishop という名前です まずはこのセンタープロパティへの変更を アニメーション化してみましょう UIView の animateWithDuration クラス メソッドを使います ランすると3秒かけてbishop が 新しい位置に移動するようになりました 途中でのタップで方向転換もします 説明画面に切り替えます このように UIView の一部のプロパティは 指定すれば元の値から新しい値に変わる― 過程をアニメーションで 表現できるようになっています その指定作業が今回加えた変更 animateWithDuration クラスメソッドで行っている作業です 最初の引数でアニメーションを 何秒で行うかを指定し animations でアニメーション化したい プロパティの値を設定します クラスメソッドなので送る相手は クラスオブジェクトとなります animations ではブロックと呼ばれる― オブジェクトを渡すのですが これは ^ の後に続く { } の 中に書かれた処理を 実行するオブジェクトです animateWithDuration クラスメソッドでは この animations 引数を 次のように定義していて この内 nonNULL は 引数として nill は指定できないと いう意味なので取り省き メソッドの引数形式から C の引数形式に書き直すと 関数ポインターのアスタリスクが ^ に変形したものだとわかります 2 つの大きな違いは 関数ポインターの示す関数が アプリの起動直後から存在し { } 内でスタック変数や引数で 作業するといったものなのに対し ブロックオブジェクトは 引数として渡される直前に作成され その時点で { } 外で使われている変数の値が オブジェクト内にコピーされ 使われるという点が異なります この仕組みにより…

目次