1. ホーム
  2. uiview

[解決済み] UIViewのフレーム、バウンズ、センター、オリジン、いつ何を使うか?

2022-04-20 07:55:01

質問

UIView はプロパティを持ちます。 frame , bounds , center および origin そして、それらはすべて相互に関連しているようです。 たいていの場合、私が扱うのは frame の位置や大きさを設定するときに使います。 UIView . と理解しています。 frame はグローバル座標系を使用しており bounds はローカルビューの座標を使用しています(したがって、そのxとyは0ですが、常にではありません)、しかし、いつ何を使用するかはまだ混乱しています。

どのような状況で(どのようなタイミングで)、他のプロパティ( bounds , center , origin を使うべきでしょうか?

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

上記のMarcoさんの回答は正しいのですが、「どのような状況で」「どのように」「どのように」という質問を拡大解釈すると...。

フレーム - ほとんどのコントロールは、"containing"コントロールに対して相対的にレイアウトされるので、frame.originはコントロールの表示位置に直接対応し、frame.sizeはコントロールをどの程度の大きさにするか決定します。

センター - このプロパティは、スプライトベースのゲームやアニメーションで、移動や拡大縮小が発生する場合に注目されるでしょう。 デフォルトでは、アニメーションと回転はUIViewの中心を基準としています。 このようなオブジェクトを frame プロパティで管理することは、ほとんど意味がありません。

境界 - このプロパティは位置決めプロパティではなく、UIView の描画可能な領域をフレームに対して "相対的" に定義するものです。 デフォルトでは、このプロパティは通常、(0、0, , 高さ ). このプロパティを変更することで、フレームの外側に描画したり、フレーム内の狭い範囲に描画を制限することができるようになります。 これについては、以下のリンクに良い議論があります。 このプロパティは、描画領域を調整する特別な必要がない限り、操作されることはまずありません。 唯一の例外は、ほとんどのプログラムで [[UIScreen mainScreen] bounds] 起動時にアプリケーションの可視領域を決定し、それに応じて最初のUIViewのフレームを設定します。

なぜUIViewにはフレーム矩形とバウンズ矩形があるのですか?

これで、それぞれのプロパティが使用される状況が明確になったかと思います。