サイズインスペクターでFrame RectangleとAlignment Rectangleの違いは誰でも説明できますか?
フレームは、画面上のビューを配置する場所とそれらのビューの大きさを示します。ビューをレイアウトするとき、制約は位置合わせ長方形と呼ばれる関連する幾何学的要素を使用します。
配置長方形はアイテムのコンテンツの表示に基づいており、自動レイアウトはアイテムのフレーム長方形の代わりに配置長方形を使用します。フレームではなく配置長方形を使用することにより、自動レイアウトは、ビューの端や中心などの重要な情報がレイアウト時に適切に考慮されるようにします。フレームとは異なり、ビューの配置長方形は、コアの視覚要素に限定する必要があります。新しいアイテムがビューに描画されるとき、そのサイズは影響を受けません。
図-1の左側を検討してください。影とバッジで描かれたビューを示しています。このビューをレイアウトするとき、自動レイアウトでは、装飾ではなく、コア要素(青い長方形)のみの整列に焦点を合わせます。
図-1:ビューの位置合わせ長方形(中央)は、装飾することなく、位置合わせするコアビジュアル要素を厳密に指します。
図-1の中央の画像は、ビューの配置長方形を強調しています。この四角形は、ドロップシャドウやバッジなどの装飾をすべて除外します。ビューの一部であり、自動レイアウトが機能するときに考慮する必要があります。図-1の右側の長方形には、ビューのすべての視覚要素が含まれています。影とバッジが含まれます。これらのオーナメントは、レイアウト中に考慮された場合、ビューの位置合わせ機能(中央、下、右など)を失う可能性があります。
図-2自動レイアウトは、スーパービューの中央に配置するときに、このビューの配置長方形のみを考慮します。影とバッジは配置に影響しません。
参照: リンク
Appleの 自動レイアウトガイド から:
レイアウトは、フレーム上ではなく、配置長方形上で動作します
レイアウトを検討する場合、コントロールのフレームは視覚的な範囲よりも重要ではないことに注意してください。結果として、通常、レイアウトの目的上、影や彫刻線などの装飾は無視する必要があります。 Interface Builderは、キャンバスにビューを配置するときにそれらを無視します。次の例では、Aquaガイド(青い破線)は、ボタンのフレーム(青い実線の長方形)ではなく、ボタンの視覚的な範囲に合わせます。
フレームではなくコンテンツの表示に基づいたレイアウトを許可するために、ビューはレイアウトが実際に動作する整列長方形を提供します。オーバーライドがOS Xで正しいかどうかを判断するには、
NSViewShowAlignmentRects
のデフォルトをYES
に設定して、配置四角形を描画します。
そのため、Xcodeのポップアップメニューは、配置の四角形またはフレームの四角形に基づいて、ビューのサイズと位置を表示および編集する機能を提供します。