アニメーション

アニメーションは、iOS と OS X 両方でユーザインタフェースを提示するための技術の不可欠な部分です。それはまた、これらのプラットフォームでユーザーエクスペリエンスの不可欠な一部とみなされます。簡単に言えば、アニメーションは、前の一つとは若干異なる画像を急速な順序で表示して起こす運動や変換の錯覚です。アニメーションは、ユーザーエクスペリエンスを向上させますが、それは単なる「目の保養 」とは全く違います。アニメーションは、ユーザーインターフェイスに何が起こっているかと言う事を、ユーザーへのフィードバックやコンテキストとして与えます。例えば iPhone の生産性アプリケーションでは、ユーザーがテーブルビューの行をタッチした場合、そのビューは通常、左へとスライドして見えなくなり、その場所へと右サイドから新しいビュースライドがやって来ます;これらのアニメーションは、視覚的に項目間の接続を強化表示し、それについての詳細なプレゼンテーションを強調します。 iOSとOS X はあなたが見るのアニメーションの多くを自動的にサポートしますが、アプリのユーザインターフェイスの他の部分のためのアニメーションを作成することができます。


訳者注: この部分に埋め込まれているアニメーションは、どうにか移植しようと努力しましたが、XCode がすぐ落ちてしまうのとそれほど大したアニメーションではないため断念しました。もし見たい場合は本来の XCode 内で視聴して下さい。


Core Animation はユーザーインターフェイス内でアニメーションに力を与える


どちらのプラットフォームでもアニメーション機能の主なソースは、Core Animation です。 Core Animation は 高速で、2D レイヤーエンジンはそれにアクセスするための Objective-C インタフェースを持ちます。アニメーションが設定された後の Core Animation では、そのアニメーションの実行は完全に自動化されています。あなたはループやタイマーをインストールする必要はなく、あなたはフレームごとに描画する必要はありませんし、あなたのアニメーションの現在の状態を追跡する必要はありません。


Core Animation のキーテクノロジーはレイヤーです。レイヤーは、ビューに似ていますが、実際にはビューに割り当てられたモデルオブジェクトの軽量オブジェクト(CALayer の)です。それらは、ジオメトリ、タイミング、およびそれらの要素に基づくコンテンツを表示するビューのためのビジュアルプロパティをカプセル化します。あなたがしなければならない事は、アニメーションのプロパティを設定し、レイヤコンテンツを設定し、Core Animation に、それらの一部をさせる事です。


アニメーションはターゲット、タイプ、タイミングの詳細を持っている必要あり


すべてをアニメーション化するためには、ターゲットオブジェクトを指定する必要があります:(例えば、そのフレームのように)アニメーション化できるかどうか可視オブジェクトがプロパティを持っているかどうか、です。ターゲットを移動、サイズ変更、またはそれを拡張するか、あるいはフェードイン・フェードアウトするかどうかも、アニメーション実行のためにどのタイプのものかを指定する必要があります。最後に、すべてのアニメーションは、それが繰り返されるかどうか、アニメーションの再生時間を含むいくつかの要因及び、タイミング情報を、必要とし、そのペーシング、つまりそれが遅くなったり、アニメーションの先頭または末尾のいずれかでスピードアップするかどうか、などです。


暗黙の・対明示的な・アニメーション


iOS の、また OS X のすべてのビューはビューの合成およびアニメーションの動作を最適化する Layer オブジェクトに裏打ちされています(またはされている可能性があります)。ビューのフレーム、色、不透明度などのビューのいくつかの層に裏打ちされたプロパティは、アニメーションが本質的にできます。それらの値を変更すると、Core Animation は古い値から新しい値への移行をアニメーション化します。これらの暗黙的なアニメーションを使用すると、UIKit フレームや AppKit フレームワークへの最小限の指示を与えるだけでできますが、フレームワークはこれらの命令を受け取った後、自動的にアニメーションを実行します。


ビューのプロパティをアニメーション化することができない場合でも、まだ明示的にこれらのプロパティを使用してビューをアニメーション化することができます。明示的なアニメーションでは、より積極的に、Core Animation の機能を使用してアニメーションやレンダリングのコンテンツを管理する必要があります。

プラットフォームはビューと Core Animation を違うように統合


Core Animation は、UIKit フレームワークの UIView クラスと AppKit フレームワークの NSView クラスと統合されていますが、その統合の性質は異なります。主な違いは、AppKit では、Core Animation の機能をあなたが要求することを前提とし、一方、UIKit の方は、レンダリングするビューの中心部の実装にコアアニメーションを統合していることです。

UIKit では、各ビュー(UIView オブジェクト)はビューの初期化時に UIView クラスが自動的に作成され CALaye オブジェクトによって支えられています。層は非常に密接にビューと対になっているので、UIView クラスのメソッドとプロパティを介してコアアニメーションをアクセスすることができます。直接ビューのLayer プロパティを使用して Layer オブジェクトにアクセスできますが、ビューを作成した後は、レイヤを変更することはできません。


AppKit では、NSView のクラスはあなたの部分の明示的なアクションを必要とし、どちらも2つの方法で、コアアニメーションとレイヤに統合されています。


AppKit フレームワークは、直接レイヤーオブジェクトを操作する必要がなくなり、使いやすいアニメーションサポートを提供する アニメーションのプロキシ もサポートしています。また、一般化されたアニメーションのサポートのために、複数のアニメーションをリンクし、複数のウィンドウとビューをアニメーション化するための機能のため NSAnimation クラスとそのサブクラスの NSViewAnimation も提供しています。


前提条件の記事


Viewオブジェクト


関連記事


プロトコル


ドローイングモデル


明確なディスカッション


Core Animation プログラミングガイド


サンプルコードプロジェクト


ビューの推移

目次
Xcode 9 の新機能

  • アニメーション
  • コア・アニメーションは力を与える
    アニメーション必要条件
    暗黙・明示にアニメーション
    Platform 毎の Core Animation 統合
  • アプリケーションオブジェクト
  • アプリ Object は外部 delegate に通知
    アプリはアプリオブジェクト持つ
  • コントロールオブジェクト
  • UIKitでActMessageがEventを決定
    AppKitでControlは複数のセルを持つ
  • 座標系
  • 座標系は異なる描画方向を持てる
    ウインドウとビューは独自座標系
  • ドローイングモデル
  • ビューは自分自身を描画
    グラフィックコンテクスト
    描画はビューローカル座標系で
  • イベント(iOS)
  • オブジェクトはビューに触れる指を表現
    タッチオブジェクトの配信は、定義された経路をたどる
    イベントを処理するために4つのメソッドをオーバーライド
    モーションイベントの処理
  • フォーマッタ
  • フォーマッタの設定と適用
    OSXでセルにフォーマッタを添付
  • メインイベントループ
  • アプリケーションオブジェクト取得
    コアオブジェクトはイベントに応答
  • アウトレット
  • ターゲットアクション
  • アクションメソッドは特定の形式
    ツールの使用でターゲット設定
    ターゲットアクションと OS
  • アンドゥ・マネージャー
  • 取り消しの操作はオブジェクトに
    取り消し操作はスタックに
    操作は取り消しグループに合体
    取り消しを要求する方法
    取消マネージャとレスポンダ
    取消を要求ユーザーインタフェース
  • ビュー階層
  • 表示プロパティは、階層の関係定義
    iOS ではウィンドウはビューです
  • ビュー・オブジェクト
  • ビューのの中核プロパティ
    ビューはアニメーションの本質
  • ストーリーボード
  • シーンは唯一のビュー·コントローラとそのビューに対応
    セグエが2つのシーン間の遷移を管理
  • ウインドウ・オブジェクト
  • ウインドウがイベント配布
    iOS のウィンドウオブジェクト
    OS X のウィンドウオブジェクト
  • ペーストボード
  • ペーストボードは多くの項目を保持
    ペーストボードの持続性
  • 環境設定
  • 各ユーザー設定はドメインに属する
    アプリは環境設定の選択を提示
    ユーザーデフォルト設定で OS X
  • レスポンダ・オブジェクト
  • ファーストレスポンダは最初に受信
    レスポンダチェーンと協調イベント










    トップへ










    トップへ










    トップへ










    トップへ










    トップへ