0

我正在摆弄 Interface Builder 并得到这个令人沮丧的偏移问题:

我创建了一个带有一些子视图层次结构的视图:

[parent view]
    |--> (dummy backround)
      |--> (a template UIView)

模板在那里,因此设计师应该能够调整计划中的更复杂视图的坐标。我想将坐标复制到以编程方式创建的视图中。这就是我所做的:

 UIView *theView = [[UIView alloc] initWithFrame:pagesBounds.frame];
 theView.backgroundColor = [UIColor grayColor];
 [self.view addSubview:theView]; // self.view is the parent view from above

到目前为止一切都很好,但我看到了一个负偏移量,theView它可以最好地显示在左下角:

在此处输入图像描述

我的目标是程序化创建的视图(深灰色的)应该将自己定位在模板视图(白色)的正上方。我已经浏览了 IB 中的视图,并确保所有视图的“自动调整子视图”都关闭(尽管真实视图被添加到最顶层)。

显然我仍然缺少一些东西。建议?

4

1 回答 1

2

之所以会出现偏移,是因为当你拿到“模板UIView”的frame时,是用“dummy background”的坐标来描述的。要正确定位它,您应该执行以下操作:

UIView *theView = [[UIView alloc] initWithFrame:CGRectOffset(pagesBounds.frame, dummyBackground.frame.origin.x, dummyBackground.frame.origin.y)];
theView.backgroundColor = [UIColor grayColor];
[self.view addSubview:theView]; // self.view is the parent view from above
于 2013-09-09T13:58:47.403 回答