iPhone: переместить UINavigationBar вниз? - PullRequest
1 голос
/ 26 октября 2010

Я пытаюсь расположить панель навигации ниже верхней части экрана.

Я попробовал следующее в viewWillAppear:

self.navigationController.view.frame = CGRectMake(0.0, 54.0, 320.0, 426.0);
self.navigationController.navigationBar.frame = CGRectMake(0.0, 0.0, 320.0, 44.0);

Проблема в том, что он работает только при первом отображении представления. Если перейти на другую вкладку и вернуться назад, панель навигации находится в верхней части экрана. Это также происходит, когда iPhone поворачивается.

Должен ли я пытаться настроить кадр контроллера навигации или вместо этого попытаться добавить контроллер навигации в другой вид, который находится ниже верхней части экрана?

Ответы [ 2 ]

4 голосов
/ 09 августа 2011

Хотя и поздно, я надеюсь, что это может помочь кому-то еще. Я использовал код Стивенса внутри viewDidAppear: анимированный, и панель навигации остается на месте при возвращении на вкладку. Это позволило мне использовать логотип над панелью навигации. Я использовал это внутри моего viewController.

    - (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.navigationController.view.frame = CGRectMake(0.0, 100.0, 320.0, 426.0); 
self.navigationController.navigationBar.frame = CGRectMake(0.0, 0.0, 320.0, 44.0); 
[self loadData];
    }
0 голосов
/ 26 октября 2010

Я могу изменить кадр, переопределив свойство frame в viewDidAppear моего пользовательского контроллера навигации. Я также добавляю представление контроллера навигации в другое представление, которое является подпредставлением окна, и делаю то же самое отсечение. Обратите внимание, потому что таким образом вы потеряете стандартные вызовы для всех контроллеров представления, которые будут подключены к контроллерам навигации. Я не помню, использовал ли я также собственное представление для моих контроллеров представления: возможно, да и с переопределением didMoveToSuperview или didMoveToWindow просто для эмуляции поведения по умолчанию. Надеюсь, это поможет и простит мой английский.

...