3

私はCALayerで何か奇妙なことに遭遇しました.そして最終的に、CALayerのframe.sizeがそのbounds.sizeと等しくないことがわかりました。これは理解できませんでした。通常、frame.origin は bounds.origin と等しくありませんが、frame.size は bounds.size と等しくなります。

4

1 に答える 1

7

これは、アップルがフレーム プロパティのドキュメントで述べているように、変換を適用したためです。

警告 変換プロパティが恒等変換でない場合、このプロパティの値は定義されていないため、無視する必要があります。

...

このプロパティへの変更はアニメーション化できます。ただし、変換プロパティに非恒等変換が含まれている場合、フレーム プロパティの値は未定義であり、変更しないでください。その場合、center プロパティを使用してビューの位置を変更し、代わりに bounds プロパティを使用してサイズを調整できます。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

変換が適用されていない場合、原点は異なる可能性がありますが、一方を調整してもう一方を再調整してもサイズは同じままである必要があります。

境界四角形のサイズはフレーム四角形のサイズに結合されるため、一方を変更すると他方が影響を受けます。

于 2012-06-22T05:01:11.677 に答える