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

Iphone 目标c-设置子视图框架以使其填充屏幕的正确方法,iphone,objective-c,ios,uiview,uiviewcontroller,Iphone,Objective C,Ios,Uiview,Uiviewcontroller,我在navigationController中有一个viewController,视图控制器有一个tableview。 在viewDidLoad中,我设置了表格视图 - (void)viewDidLoad { [super viewDidLoad]; // init tableView CGRect tableFrame = self.view.bounds; _tableView = [[UITableView alloc] initWithFrame:ta

我在navigationController中有一个viewController,视图控制器有一个tableview。 在viewDidLoad中,我设置了表格视图

- (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]

那么,设置表格视图以填充屏幕的正确方法是什么? 我可以想出两种方法:

将其帧设置为=0,0320416

用法:[[u tableView setAutoresizingMask:uiviewautoresizingflexiblewhight | UIViewAutoresizingFlexibleWidth]


不要使用魔法数字。正确使用调整大小标志。 是的,你的2。方法是正确的

1使用超级视图边界。_tableView.frame=self.view.bounds

2设置自动调整大小标志[_tableviewsetautoresizingmask:uiviewautoresizingflexiblewhight | UIViewAutoresizingFlexibleWidth]


你已经做到了这一切:

第一条路绝对是错误的。。。如果屏幕大小在未来的操作系统/设备中发生变化,会发生什么情况

我很好奇为什么你不使用nib文件来做这件事,省去了麻烦,但是如果你必须用代码来做,那么根据你的选项2设置自动调整大小的掩码