6

(ドキュメントはこちら)のcontentsRectプロパティを使用すると、描画に使用するレイヤーの量を定義できますが、座標系がどのように機能するかはわかりません。CALayer

幅/高さが小さいと、コンテンツに使用される領域が大きくなり、その逆の場合もあるようです。同様に、負の x、y 位置は、私の直感とは反対に、コンテンツ領域を右下に移動するように見えます。

誰かがこれがなぜなのか説明できますか? もっともな理由があると確信していますが、グラフィックス プログラミングのバックグラウンドが欠けていると思います。

4

1 に答える 1

20

CALayerのcontentsRectプロパティ(ここのドキュメント)を使用すると、描画に使用するレイヤーの量を定義できます。

いいえ、あなたはそれについて間違って考えています。

画像のどの部分をレイヤーに表示するかをcontentsRect指定します。contents

その部分は、プロパティに従ってレイヤーに配置されcontentsGravityます。

これがkCAGravityResizeデフォルトの場合、レイヤーに合わせてパーツのサイズが変更されます。それはあなたが見ている直感に反する振る舞いを説明するでしょう-あなたはcontentsRect小さくしますが、レイヤーは同じサイズであるように見え、画像の選択された部分に「ズームイン」しているように見えます。contentsGravityサイズ変更されないに設定すると、理解しやすくなる場合がありますkCAGravityCenter

ほとんどの場合、をcontentsRectID rectのサブrectに設定する{ {0, 0}, {1, 1} }ため、コンテンツの一部のみを表示することを選択します。

(必要に応じて、これらをパーセンテージとして考えてください。contentsRectサイズがの場合は、の{0.5, 0.5}50%を選択していますcontents。)

の一部がcontentsRectID長方形の外側にある場合、CAはエッジピクセルをcontents外側に拡張します。これは便利な場合もありますが、単独で使用するものではありません。マスクまたは他のレイヤーと組み合わせて使用​​すると、効果が得られます。

于 2012-04-12T05:37:58.490 に答える