强制子视图填充父级

时间:2013-06-20 14:05:10

标签: objective-c cocoa-touch

我有一些子视图,我放在每个标签栏的视图控制器中。现在我用像素计数来调整它的尺寸,但它只适用于iPhone 4和4s而不是iPhone 5,因为屏幕尺寸较长。我可以检查设备,然后按照这种方式调整大小,但我觉得必须有一种更简单的方法来做到这一点。

viewController1.view.frame = CGRectMake(0, 0, 320, 460);

我将子视图染成黄色,因此更容易看到。

enter image description here

3 个答案:

答案 0 :(得分:7)

  1. 您不应更改标签栏内容视图控制器视图的框架。 UITabBar负责正确调整子视图控制器框架的大小。
  2. 如果要将子视图添加到内容视图控制器(某些选项卡下的控制器)并使该视图始终使用控制器主视图(self.view)自动调整大小,则可以使用superview的组合框架和自动调整。
  3. 示例代码(您可以在- (void)viewDidLoad中执行此操作):

    UIView *view = [[UIView alloc] initWithFrame:self.view.bounds];
    view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:view];
    

答案 1 :(得分:3)

如果你想通过设置框架而不是DO这样做:

[childView setFrame:childView.superview.bounds];

答案 2 :(得分:0)

视图控制器中的主视图应该已经是sceen上可用空间的大小。通常,如果您希望视图的大小与其父级相同,则可以使用view.frame = view.superview.frame,但我怀疑调用视图控制器的视图是个好主意。