Cocoa: フレームと境界の違いは何ですか? 質問する

Cocoa: フレームと境界の違いは何ですか? 質問する

UIViewおよびそのサブクラスにはすべて、プロパティframeとがありますbounds。違いは何でしょうか?

ベストアンサー1

境界はUIビューそれは矩形独自の座標系 (0,0) を基準とした位置 (x,y) とサイズ (幅,高さ) として表されます。

フレームのUIビューそれは矩形含まれているスーパービューに対する相対的な位置 (x,y) とサイズ (幅,高さ) として表されます。

そこで、スーパービューの 25,25 (x,y) に配置された、サイズが 100x100 (幅 x 高さ) のビューを想像してください。次のコードは、このビューの境界とフレームを出力します。

// This method is in the view controller of the superview
- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"bounds.origin.x: %f", label.bounds.origin.x);
    NSLog(@"bounds.origin.y: %f", label.bounds.origin.y);
    NSLog(@"bounds.size.width: %f", label.bounds.size.width);
    NSLog(@"bounds.size.height: %f", label.bounds.size.height);

    NSLog(@"frame.origin.x: %f", label.frame.origin.x);
    NSLog(@"frame.origin.y: %f", label.frame.origin.y);
    NSLog(@"frame.size.width: %f", label.frame.size.width);
    NSLog(@"frame.size.height: %f", label.frame.size.height);
}

このコードの出力は次のようになります。

bounds.origin.x: 0
bounds.origin.y: 0
bounds.size.width: 100
bounds.size.height: 100

frame.origin.x: 25
frame.origin.y: 25
frame.size.width: 100
frame.size.height: 100

したがって、どちらの場合も、境界を見ているかフレームを見ているかに関係なく、ビューの幅と高さは同じであることがわかります。異なるのは、ビューの x、y の位置です。境界の場合、x 座標と y 座標はビュー自体に相対的であるため、0,0 になります。ただし、フレームの x 座標と y 座標は、親ビュー内のビューの位置 (前に 25,25 であると述べました) に相対的です。

また、素晴らしいプレゼンテーションUIViews について説明しています。フレームと境界の違いを説明するだけでなく、視覚的な例も示しているスライド 1 ~ 20 を参照してください。

おすすめ記事