UINavigationController和UITableView框架问题

UINavigationController和UITableView框架问题,uitableview,uinavigationcontroller,frame,Uitableview,Uinavigationcontroller,Frame,当我有一个UINavigationController和一个UITabBarController时,如何从视图中获得适当的大小 为了避开它,我必须: self.tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain]; 我总是需要手动设置视图/表视图的高度,以便与UINavigationController相适应,这真的很烦人 这似乎有点奇怪,为什么不自动减去状态栏的高

当我有一个UINavigationController和一个UITabBarController时,如何从视图中获得适当的大小

为了避开它,我必须:

self.tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
我总是需要手动设置视图/表视图的高度,以便与UINavigationController相适应,这真的很烦人

这似乎有点奇怪,为什么不自动减去状态栏的高度呢?这是默认样式,不是透明的状态栏

谢谢


更新:如果我在init方法之后分配tableView,只需将frame设置为self.view.frame就可以了。Wuzzup wit dat?

在init方法之前设置UINavigationController的帧将不起作用,因为UINavigationController尚未加载和显示。仅在加载控制器及其视图后才设置帧


您应该在UINavigationController的viewDidLoad方法中设置表(以及所有类似的初始化)。如果这样做,您将不会看到任何此类问题。

或者,在加载视图后,调用setNeedsLayout可以解决此问题。
CGRect frame = self.view.frame;
frame.origin.y -= [UIApplication sharedApplication].statusBarFrame.size.height;
tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];