У меня проблема с UINavigationBar и его смещением по оси y. Панель отображается без UINavigationController как суперпредставление, но это не должно иметь значения. В viewController, где появляется панель навигации, настройка выглядит следующим образом:
// Add Basic View
CGRect viewFrame = [[UIScreen mainScreen] applicationFrame];
UIView *myView = [[UIView alloc] initWithFrame:viewFrame];
myView.backgroundColor = [UIColor greenColor];
self.view = myView;
[myView release];
UINavigationBar *myBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 50)];
.... add some Stuff to the bar...
[self.view addSubview:myBar];
[myBar release];
Когда я добавлял навигационную панель как представление chield в self.view, я предположил, что origin.y = 0 будет означать, что панель должна отображаться непосредственно под строкой состояния. Это работает, как и ожидалось, если я запускаю приложение на своем iPad, поворачиваю его один раз (или больше), а затем переходю к представлению, которое описано выше. В этом случае UINavigationBar отображается правильно. Тем не менее, если я запускаю свое приложение и напрямую переходю к описанному выше контроллеру (не поворачивая устройство до появления этого конкретного контроллера), панель навигации скользит на 20 пунктов ниже строки состояния. Но как только я поворачиваю устройство, панель снова в порядке. Я проверил значение viewFrame.origin.y, и оно составляет 20 баллов в обеих ситуациях, поэтому я не понимаю, почему в одном случае столбец просто игнорирует значение origin.y своего суперпредставления, а в другом - нет.
Я действительно смущен этим, кто-нибудь еще сталкивался с такой проблемой?
Большое спасибо за вашу помощь!
Ps. Я также попробовал это с UIToolbar, проблема та же.