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

Eya*_*yal 0 iphone objective-c uiviewcontroller uiview ios

我有一个viewController里面的一个navigationController,视图控制器有一个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];
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

cal*_*kus 6

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

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

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

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


Ash*_*lls 6

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

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