Попытка получить постоянные UIToolBars со скрытым UINavigationBar, кажется, манипулирует недокументированным классом View - PullRequest
0 голосов
/ 26 марта 2011

У меня есть панель инструментов вверху и внизу, оба установлены в окне.Я также использую UINavigationController.Поэтому я хочу скрыть навигационную панель.Я нашел этот вопрос:

Постоянный UIBarButtonItem в UIToolbar?

Итак, в делегате приложения я сделал:

[window addSubview:navigationController.view];
CGRect frame = navigationController.view.frame; // What is this view???
frame.size.height -= (topToolBar.frame.size.height + bottomToolBar.frame.size.height + [UIApplication sharedApplication].statusBarFrame.size.height);
frame.origin.y += topToolBar.frame.size.height + [UIApplication sharedApplication].statusBarFrame.size.height;
navigationController.view.frame = frame;
[navigationController setNavigationBarHidden:YES];

Панели инструментов связаны втам жеВот что вы видите:

  • Строка состояния.ОК.
  • Половина верхняя панель инструментов
  • Панель навигации, которая скрывает нижнюю половину верхней панели инструментов и немного загруженного вида.
  • Ваш первый вид с небольшой частью вверху, скрытой панелью навигации.
  • Нижняя панель инструментов в порядке.

setNavigationBarHidden, кажется, просто перемещает панель навигации в сторону.Я могу достичь того, что хочу, явно установив hidden = YES на панели навигации (или категорию на UINavigationBar и переопределив drawRect).

Представление на контроллере навигации, по-видимому, является UILayoutContainerView.Это кажется недокументированным.

Итак:

  • Это хороший метод?Может ли он быть отклонен?
  • Почему я получаю такое перекрывающееся поведение с панелью навигации?

1 Ответ

1 голос
/ 14 ноября 2011

Я нашел, что это решение работает (без наложения панели навигации)

CGFloat height = [self.toolbar frame].size.height;
CGRect rootBounds = self.window.rootViewController.view.bounds;
CGRect frame = CGRectMake(0, CGRectGetHeight(rootBounds) - height, CGRectGetWidth(rootBounds), height);

[self.toolbar setFrame:frame];
[self.navigationController.view addSubview:self.toolbar];
...