2012-09-21 3 views
0

У меня есть модальное представление всплывающего с панелью навигации, и когда я пытаюсь достигнуть высоты этой навигационной панели из загруженного зрения с помощью оператора ...iOS Dev: Почему self.navigationController.navigationBar.frame.size.height возвращает ноль?

self.navigationController.navigationBar.frame.size.height; 

... она возвращает 0. Почему это будет?

Большое спасибо за вашу мудрость!

+0

, что аргумент формата вы используете (т.е.% @,% ЛС) –

+0

Покажите нам больше коды .. – mspasov

ответ

2

Это, вероятно, потому, что один из объекта, который вы используете в своем выражении является nil.

Возможно, это, например, self.navigationController. Может быть, вы неверно истолковали свою иерархию взглядов? (Попробуйте NSLog(@"%@", self.navigationController);, чтобы проверить, если это nil или нет и быть уверенными)

+0

Да, вы были правы, контроллер nav был нулевым. Спасибо! – BeachRunnerFred

0

Не знаю почему, но если вы ничего не изменитесь, навигационная панель всегда будет иметь высоту в 44 пикселей

+0

Это не верно. В Landscape больше на iPhone, NavigationBar не такой же высоты, как в режиме Portrait. – AliSoftware

+0

Правда, извините, что это 32 для пейзажа. – nicolasthenoz

+0

И, кроме того, плохой практикой является использование магических чисел в вашем коде, например, написанных на жестком уровне. Мы видели, что Apple может менять вещи в ОС и в самом телефоне (например, все, что разгневанное «480» объявление высотой экрана в их коде прикручиваются сегодня, тогда как использование 'view.window.screen.applicationFrame.size .Hight все равно вернет правильное значение везде), поэтому ничто не гарантирует, что Apple не изменит высоту NavBar в будущей версии iOS, например. Таким образом, лучше использовать значение, подобное ОП, вместо жесткого кодирования значения. – AliSoftware