我在摆弄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中的视图,并确保所有视图均未使用“自动调整大小子视图”(尽管实际视图已添加到最顶部)。

显然我仍然缺少一些东西。有什么建议吗?

最佳答案

发生偏移的原因是因为当您获得“模板UIView”的框架时,将根据“虚拟背景”的坐标进行描述。要正确放置它,您应该执行以下操作:

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

09-25 20:52