在Landscape中启动时,UIView的大小会被搞砸

时间:2013-03-21 20:34:53

标签: ios objective-c uiview uiviewcontroller

我有一个遏制UIViewController,在我的viewDidLoad方法中,我从故事板中加载了它的子视图控制器。然后我将子视图控制器视图添加为子视图并尝试设置此新视图大小:

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

当您在横向模式下启动应用程序时,会在左侧(物理设备的底部)获得20px的“间隙”。 如果我在代码中获取设备方向并使用

,我可以避免这种情况
  CGRectMake(0,0,748,1024);

表示帧属性,而不是检测到格局时。但是,我认为必须有不同的解决方案。

在问题出现之前:我设置框架而不是bounds属性,因为一旦解决了这个问题,我需要将视图放在除0,0以外的地方。据我所知,没有别的方法可以做到这一点,对吗?

1 个答案:

答案 0 :(得分:4)

根据父视图的边界设置子视图的框架。然后确保子视图的自动调整遮罩设置为“弹性宽度”和“弹性高度”。不要硬编码像你这样的尺寸。

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

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