【问题标题】:UINavigationController and UITableView frame issueUINavigationController 和 UITableView 框架问题
【发布时间】:2011-02-17 15:46:21
【问题描述】:
self.tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];

当我有 UINavigationController 和 UITabBarController 时,如何从视图中获得正确的大小?

为了绕过它,我必须这样做:

CGRect frame = self.view.frame;
frame.origin.y -= [UIApplication sharedApplication].statusBarFrame.size.height;
tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];

为了适应 UINavigationController,我总是必须手动设置视图/表格视图的高度,这真的很烦人

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

谢谢

更新:如果我在 init 方法之后分配 tableView,只需将框架设置为 self.view.frame 即可。 Wuzzup 机智吗?

【问题讨论】:

    标签: uitableview uinavigationcontroller frame


    【解决方案1】:

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

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

    【讨论】:

    • 或者,在加载视图后调用 setNeedsLayout 可以解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    相关资源
    最近更新 更多