2011-11-14 62 views
0

第一個UIImageView使用框架(0,38,250,250)創建,第二個UIImageView使用第一個視圖的框架創建並添加爲第一個圖像視圖的子視圖。結果顯示第一個圖像視圖沒有被第二個圖像視圖完全覆蓋。爲什麼兩個視圖都不重疊?我分配了兩個不同背景顏色的圖像視圖,以便於查看。具有相同框架但不重疊的兩個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。 Bound是一個CGRect,它沒有偏移量(原點是0,0)。

1

如果你想添加第二個視圖到第一個然後創建第二個框架CGRectMake(0, 0, 250, 250);在這種情況下,兩個視圖將具有相同的座標。

如果要將第二個子視圖添加到self.view,請使用firstView.frame創建它。在這種情況下,兩個視圖將具有相同的座標。

相關問題