У меня есть приложение для iPhone, которое использует Navigation Controller для отображения верхней панели (с заголовком и кнопкой «Назад» и т. Д.).
Я добавил UITabBar
в окно приложения, которое позволяет переключаться между его частями. Вместо добавления панели вкладок к каждому представлению ViewController я добавил панель в окно приложения.
(Когда у меня это было в ViewController, переключение между контроллерами заставляло панель вкладок перемещаться влево / вправо, когда происходило анимированное всплывающее окно / нажатие, вместе со всем видом).
Итак, я добавил UITabBar
к MainWindow.xib
и привязал его к переменной делегата приложения. В моем методе didFinishLaunchingWithOptions
я добавил следующий код:
[self.window addSubview:navigationController.view];
CGRect frame = navigationController.view.frame;
frame.size.height -= tabbar.frame.size.height;
navigationController.view.frame = frame;
tabbar.selectedItem = [tabbar.items objectAtIndex:0];
, чтобы изменить размер основного (navigationController
) вида, чтобы сделать TabBar видимым.
Проблема появляется, когда я поворачиваю устройство - мой вид растягивается до полного окна, и я теряю способность показывать TabBar.
Я добавил метод - (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation
в свой ViewController со следующим кодом:
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect frame = self.view.frame;
frame.size.height -= [AppState shared].tabBar.frame.size.height;
//frame.origin.y = [AppState shared].tabBar.frame.size.height;
//frame.origin.x = 100;
self.view.frame = frame;
frame = [AppState shared].tabBar.frame;
frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.origin.y - frame.size.height;
[AppState shared].tabBar.frame = frame;
}
Он изменяет размеры представления и перемещает панель вкладок в верхнюю / нижнюю часть вида (здесь я разрешаю только книжную / книжную ориентацию вверх ногами). Проблема в том, что моя TabBar перевернута вверх дном, а также, она больше не активна.
Это похоже на изображение ниже:
Кто-нибудь знает, как справиться с такой ситуацией? Или как сделать панель вкладок не привязанной к просмотру контроллера, но также способной плавно обрабатывать поворот интерфейса?