第一个UIImageView是使用frame(0,38,250,250)创建的,第二个UIImageView是使用第一个视图的帧创建的,并添加为第一个图像视图的子视图。结果显示第一个图像视图未被第二个图像视图完全覆盖。为什么两个视图都不重叠?我分配了两个具有不同背景颜色的imageview,因此更容易看到。
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];
答案 0 :(得分:3)
帧在不同的坐标系中定义。每个视图的框架都在其父视图的坐标系中定义。该坐标系通常具有(0.0,0.0)作为父视图的左上角。具有不具有原点(0.0,0.0)的框架的子视图将不与其父视图对齐。
要始终将子视图与其对齐并填充其父视图,请使用:
view.frame = parentView.bounds;
答案 1 :(得分:1)
子视图被initWithFrame:firstView.bounds
所需的帧偏移量所抵消。 Bound是CGRect
,没有偏移(原点是0,0)。
答案 2 :(得分:1)
如果你想先添加第二个视图,那么为第二个CGRectMake(0, 0, 250, 250);
创建框架。在这种情况下,两个视图将具有相同的坐标。
如果您要将第二个子视图添加到self.view
,请使用firstView.frame
创建它。在这种情况下,两个视图将具有相同的坐标。