1

我有一个容器UIViewController,在我的viewDidLoad方法中我从情节提要加载它的子视图控制器。然后我将子视图控制器视图添加为子视图并尝试设置这个新的视图大小:

  childVC.view.frame=CGRectMake(0,0,768,1004);

发生的情况是,当您以横向模式启动应用程序时,左侧(物理设备的底部)会出现 20 像素的“间隙”。如果我在代码中获取设备方向并使用,我可以避免这种情况

  CGRectMake(0,0,748,1024);

当检测到景观时,改为使用 frame 属性。但是,我认为必须有不同的解决方案。

在问题出现之前:我设置了框架而不是边界属性,因为一旦解决了这个问题,我需要将视图定位在 0,0 以外的位置。据我所知,没有其他方法可以做到这一点,对吧?

4

1 回答 1

4

根据父视图的边界设置子视图的框架。然后确保子视图的自动调整大小掩码设置为“灵活宽度”和“灵活高度”。不要像你一样对尺寸进行硬编码。

childVC.view.frame = parentVC.view.bounds;
childVC.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

一旦这工作,您可以根据需要调整子视图的框架。但它仍然应该基于父视图的边界。

于 2013-03-21T20:50:11.240 回答