2010-07-06 4 views
4

У меня есть UINavigationController, который появляется со смещением 20 пикселей. Это точная проблема, с которой я столкнулся: http://forums.macrumors.com/showthread.php?t=761616 Но я не могу понять, как правильно ее решить.UINavigationController Offset

Thanks,

+0

Как дела вы добавляете представление UINav на экран? –

+0

Я инициализирую его, надавите на него viewController и добавьте его в основное представление ... –

+0

Одинаковая проблема здесь. iOS 4.3.1 в комбинации с UISplitViewController. Попробовали все, без успеха. Даже установка рамки не помогает. – Krumelur

ответ

0

Убедитесь, что рамка установлена ​​на (0,0). Вероятно, это пространство, потому что вы добавляете 20 пикселей в позицию Y, чтобы компенсировать строку состояния, но это уже обрабатывается для нас.

+0

Я не касался рамки. Он должен быть выровнен с 0,0 автоматически. Плюс, если я попытаюсь вручную отрегулировать рамку, тогда я вижу смещение и только вторую из двух после этого, она встает на свои места. –

+0

Вы пытались изменить фрейм в методе viewWillAppear:? И вы уверены, что не коснулись рамки в любом коде или xib? –

+0

Да, я нигде не касался кадра (не в наконечнике, а не в коде). Кроме того, я только что открыл новый проект, сделал то же самое, и смещение все еще было. И, когда я скрываю строку состояния, панель навигации появляется в верхней части экрана (на 40 пикселей выше, чем сейчас). Я думаю, что здесь что-то не хватает ... –

0

Вы добавили строку состояния в качестве верхней панели из Interface Builder ?. Возможно, вы сохранили место для строки состояния.

+0

Нет. Я не коснулся конструктора интерфейса. Я добавил навигационный контроллер программным способом. –

+0

Я думаю, что лучше всего скрыть строку состояния из info.plist. В plist есть запись, называемая «Строка состояния изначально скрытой». Отметьте эту запись и удалите свой код состояния, скрывающий код из вашего проекта. –

2

После того как я просмотрел возможный способ решения, люди сказали, что он должен быть смещен на 20 пикселей программно. Вот мое решение:

// adjust the frame of subview which is going to be add 
self.navController.view.frame = CGRectMake(0, 0, 320, 460); 
[self.view addSubView:self.navController.view]; 

Он теперь работает хорошо для меня, удачи ~ :)

1

Решение этой проблемы является установка кадра splitviewcontroller к [[UIScreen mainScreen] bounds]; например

self.mSplitViewC.view.frame = [[UIScreen mainScreen] bounds]; 
Смежные вопросы