目标c - 设置子视图框架的正确方法,使其填满屏幕

时间:2012-06-04 14:01:37

标签: iphone objective-c ios uiview uiviewcontroller

我在navigationController内有一个viewController,视图控制器有一个tableview 在viewDidLoad我设置了tableview

- (void)viewDidLoad
{
    [super viewDidLoad];

    // init tableView
    CGRect tableFrame = self.view.bounds;

    _tableView = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStylePlain];

    _tableView.delegate = self;
    _tableView.dataSource = self;

    [self.view addSubview:_tableView];
}

此代码的问题是表格视图框架不正确 - 高度为460,我需要它为416.

[iPhone屏幕高度为480,减去状态栏(20)减去导航栏(44)= 416]

那么设置表格视图的正确方法是什么,它将填满屏幕?
我可以想到两种方式:

  1. 将其框架设置为= (0, 0, 320, 416)

  2. 使用:[_tableView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];

2 个答案:

答案 0 :(得分:6)

不要使用魔术数字。正确使用调整大小标记。 所以是的,你的2.方法是正确的。

1)使用超级界限。
_tableView.frame = self.view.bounds;;

2)设置自动调整标志
[_tableView setAutoresizingMask: UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];

(你已经完成了所有这些:)

答案 1 :(得分:6)

1号绝对是错误的做法...如果未来的OS /设备屏幕尺寸发生变化会怎样?

我很好奇你为什么不使用nib文件这样做,并省去了麻烦,但如果你必须在代码中执行此操作,请根据选项2设置自动调整大小的掩码。