CGLayer
とCALayer
を混同しています。それらは似ているように見えますが、なぜ別々の実装があるのですか? CGLayer
とCALayer
の違いと互換性は何ですか?
それらは完全に異なり、互換性がありません。
完全に明確にするために:
厳密には偶然単語「レイヤー」が両方で使用されている名前;それらは完全に無関係です。
CGLayersは「特別な」「高性能」なものです。
それらは「ビットマップのようですが、より優れている」と考えることができます。
Appleは腰を下ろし、「ビットマップを使用する人々にうんざりしている。何かをもっと良くしよう!」と言った。 :-)
実際、CGLayers offscreenでのみ作業します。
繰り返しますが、CGLayersは完全にオフスクリーンで使用されます。
準備ができたら、実際の画面にブラストすることができます(つまり、ビューの1つにブラストします)。
(ただし:注:CGLayersは「単独で」使用されることがよくあります。「単独で」使用されるとは、画像処理または数学計算に使用されることを意味します。その場合、CGLayersは画面上で見たことはなく、画面上の世界とはまったく関係がありません。)
対照的に...CALayersは単にビューの「中にある」ものです。CALayersはビューの動作方法です。
したがって、2つの概念は完全に異なります。
CALayersは、ビューの「中にある」ものにすぎません。 対照的に、CGLayersはAppleのクールな「オフスクリーン、高性能、計算機構」です。
明確にするために、CGLayersにはビューとの接続がまったくなく、ビューとの関連付けもありません。 (もちろん、CGLayerをビューに貼り付けることはできますが、「タイポグラフィ」または「画像」などをビューに貼り付けることができます。タイポグラフィと画像はビューではなく、CGLayersはビューではありません。)
典型的な例はこれです:
複雑なものを一度描いてから、それを何度も画面に描きたいと思います。その問題への答えはまさにCGLayersです。 「作業領域」はCGLayerになります。次に、それをプリンターや画面などにブリットすることができます。
明確にするために、私の意見ではAppleは別の名前を選択する必要がありました.。
適切な名前は「CGCalculationSpace」です。
名前に「レイヤー」という言葉が含まれているという事実は、NSLayersを思い起こさせます。
繰り返しになりますが、いかなる関係もまったくありません。 CGLayersは、漠然とレイヤーに関連していません。
接続はまったくありません。名前に「la y e r」という文字が使われているのは本当に紛らわしいですが、それは残念です!
CGLayersは、おそらく「ワークスペース」または「計算パラダイム」などと呼ばれる必要があります。
それがお役に立てば幸いです、そしてあなたがまだ読んでいることを願っています!