У меня проблема с 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];
Когда я добавляю панель навигации в качестве панели View в self.view, я предположил, что origin.y = 0 будет означать, что панель должна отображаться непосредственно под строкой состояния. Это работает должным образом, если я запустил приложение на своем iPad, повернул его один (или несколько раз), а затем перешел к описанному выше представлению. В этом случае UINavigationBar отображается правильно. Тем не менее, если я запускаю свое приложение и напрямую перехожу к описанному выше контроллеру (без поворота устройства до появления этого конкретного контроллера), панель навигации перемещается на 20 пунктов ниже строки состояния. Но как только я поверну устройство, панель снова в порядке. Я проверил значение viewFrame.origin.y, и в обеих ситуациях оно составляет 20 баллов, поэтому я не понимаю, почему в одном случае панель просто игнорирует значение origin.y своего супервизора, а в другом - нет.
Я действительно смущен этим, кто-нибудь еще сталкивался с такой проблемой?
Спасибо большое за вашу помощь!
Пс. Еще пробовал с UIToolbar, проблема та же.