2011-11-14 16 views
0

最初のUIImageViewはフレーム(0,38,250,250)で作成され、2番目のUIImageViewは最初のビューのフレームで作成され、最初の画像ビューのサブビューとして追加されます。結果は、第1の画像ビューが第2の画像ビューによって正確に覆われていないことを示す。なぜ両方のビューが重なっていないのですか?私は異なった背景色で2つのイメージビューを割り当てたので、見るのが簡単です。同じフレームで2つのUIImageViewsが正確に重複していません

UIImageView *firstView = [[[UIImageView alloc] initWithFrame:CGRectMake(0,38,250,250)] autorelease]; 
[firstView setBackgroundColor:RGBACOLOR(36, 39, 39, 0.8)]; 
[self.view addSubview:firstView]; 

UIImageView *itemPic = [[[UIImageView alloc] initWithFrame:firstView.frame] autorelease]; 
itemPic.image = [UIImage imageNamed:@"color_c.png"]; 
[itemPic setBackgroundColor:RGBACOLOR(150, 150, 35, 0.8)]; 
[firstView addSubview:itemPic]; 

two imageviews are not exactly overlapped

答えて

3

フレームは、異なる座標系で定義されています。各ビューのフレームは、親ビューの座標系で定義されます。その座標系は通常、親ビューの左上隅として(0.0、0.0)を持ちます。起点(0.0、0.0)を持たないフレームのサブビューは、その親ビューと揃えられません。

は常に、と合わせて、その親ビューを埋めるためにサブビューを取得するために使用:

view.frame = parentView.bounds; 
1

サブビューは、フレームのあなたがinitWithFrame:firstView.boundsに必要なオフセットにより相殺されています。バインドされたオフセットはありません(起点は0,0)CGRectです。

1

最初に2番目のビューを追加し、次に2番目のフレームを作成する場合CGRectMake(0, 0, 250, 250);この場合、両方のビューは同じ座標を持ちます。

self.viewに2番目のサブビューを追加する場合は、firstView.frameで作成します。この場合、両方のビューは同じ座標を持ちます。

関連する問題