Раз и навсегда решить проблему initWithFrame: self.view.frame 20 пикселей (строка состояния)

У меня есть простой UINavigationController. В методе инициализации я создаю и добавляю UITableView в качестве подпредставления.

- (id)init {
    self = [super init];
    if (self) {
        NSLog(@"%@", NSStringFromCGRect(self.view.frame)); // {{0, 20}, {320, 460}}
        tableView = [[UITableView alloc] initWithFrame:self.view.frame];
        [self.view addSubview:tableView];
    }
    return self;
}

Я всегда сталкиваюсь с та же досадная проблема при работе с новыми проектами. Добавленные подпредставления оказываются на 20 пикселей ниже панели навигации.

Почему я получаю {{0, 20}, {320, 460}} для self.view.frame ? Я не хочу форсировать фрейм CGRect, я бы предпочел установить его на основе фрейма контроллера представления, чтобы у меня не возникало проблем с динамическими изменениями фрейма (модем, телефонный звонок и т. Д., Когда строка состояния выше ).

Обновление: Также заметил, что я получаю высоту кадра 460. Это тоже не имеет смысла. В моем случае у меня действительно есть панель вкладок, поэтому высота не должна быть минусовой. строка состояния без панели навигации и высоты панели вкладок?

Спасибо

5
задан runmad 11 November 2011 в 21:05
поделиться