Панель навигации и верхнее поле - PullRequest
1 голос
/ 28 июля 2010

У меня проблема с 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, проблема та же.

1 Ответ

0 голосов
/ 28 июля 2010

Да. Мое решение состоит в том, чтобы установить флажок «Полный экран при запуске» в Интерфейсном Разработчике для окна в файле MainWindow-iPad.xib. Затем спроектируйте свои представления так, как если бы строка состояния в 20 пикселей всегда отображалась, поэтому в моем корневом представлении у меня есть панель инструментов, которая расположена на 20 пикселей ниже верхней части экрана в представлении содержимого.

...