1. ホーム
  2. ios

[解決済み] UIViewとCALayerの違いは何ですか?

2022-11-09 05:08:21

質問

どちらもほとんど同じ属性を持っていて、異なる種類のアニメーションをサポートし、異なるデータを表します。 UIViewとCALayerの違いは何ですか?

どのように解決するのですか?

iOSでは、すべてのUIViewはCore Animation CALayerによってバックアップされているので、UIViewを使用するときは、気づいていないかもしれませんが、CALayerを扱っていることになります。 Core Animation が存在する前に進化した Mac の NSView とは異なり、UIView はこれらの CALayers の軽量ラッパーであることを意図しています。

私は同様の質問で説明するように Mac/iPhoneでCALayerを使用する場合?" のように、CALayers を直接使用しても、UIViews よりも大きなパフォーマンスの利点は得られません。 UIViewsの代わりにCALayersでユーザーインターフェイスの要素を作りたいと思う理由の一つは、Macに非常に簡単に移植できることです。 UIViewsはNSViewsと大きく異なりますが、CALayersは2つのプラットフォームでほとんど同じです。 これが、Core Plotフレームワークが他のUI要素の代わりにCALayersを使ってグラフをレイアウトしている理由です。

UIViewsがCALayersより優れている点の1つは、ユーザーインタラクションのための組み込みサポートです。 CALayers の階層を管理する場合、自分で構築する必要があるタッチおよび他の関連するアクションでのヒット テスティングを処理します。 これを自分で実装するのはそれほど難しくありませんが、CALayerだけのインターフェイスを構築するときに書かなければならない余分なコードになります。

基底のUIViewクラスが可能にするよりも複雑なアニメーションを実行するとき、しばしばUIViewのための基礎となるレイヤーにアクセスする必要があります。 UIViewのアニメーション機能はiOS SDKが成熟するにつれて成長してきましたが、基礎となるCALayerとの対話によって行うのが最善であるものがまだいくつかあります。