viewとview.layerの関係は何ですか。たとえば、view.layerにはプロパティpositionがあります。ビューにはプロパティセンターがあります。レイヤーの位置を変更すると、ビューは中心のプロパティを変更しますか?view.layerの境界を変更すると、viewはその境界プロパティも変更しますか?
2 に答える
ビューはレイヤーによって支えられています。stackmonsterが言うように、レイヤーは、システムがコンテンツの長方形の領域を画面にレンダリングするために使用する低レベルの描画コンテキストを記述します。
stackmonsterがレイヤーを直接操作しないこと、およびアニメーションのパフォーマンスが低いことについて述べた他のことは、完全に間違っています。CoreAnimationはレイヤーに基づいています。多くの単純なアニメーションでは、UIViewアニメーションを使用できますが、レイヤーを直接作成して使用する必要があるアニメーションのクラス全体やその他のものがあります。すべてのCAAnimationオブジェクトはレイヤーに作用し、レイヤーを直接操作することによってのみ実行できる非常に優れたトリックがたくさんあります。描画やアニメーションには常にレイヤーを使用しています。
レイヤーとビューは、画面上の位置を制御するためにわずかに異なるプロパティを使用します。あなたが言うように、ビューにはcenterプロパティがあり、レイヤーにはpositionプロパティがあります。それらは類似しています。
レイヤーは、潜在的に複数のクリッピング領域を共有するグラフィカルコンテキストを表しますが、パフォーマンス上の理由から描画操作を集約する可能性もあります。これは、アルファ(透明度)値が競合する重複するビューまたはアニメーション効果によって制約される場合があります。
通常、レイヤーを手動で操作することはありませんが、API呼び出しでレイヤーを参照して、基盤となるフレームワークがこれらすべてを自動的に分類できるようにすることができます。そうしないと、iOSでかなりひどいアニメーションパフォーマンスが発生します。
非常に低レベルのグラフィックコーディングを行っていない限り、レイヤーの境界を直接操作する理由がわかりません。