Как предотвратить изменение размера / преобразования вида, когда UINavigationBar скрывается / отображается

У меня есть приложение с панелью вкладок и панелью навигации. Я нажимаю на контроллер представления, который используется для отображения фотографий, по одной. Первоначально он показывает полосы и элементы управления вперед / назад; после задержки они скрываются с помощью setNavigationBarHidden:animated: и настраиваемого преобразования (CGAffineTransformMakeTranslation) на панели вкладок. Это работает, но представление контроллеров представления, которое показывает фотографию, прыгает вверх и вниз. То же самое верно, если я оставлю панель вкладок вне уравнения.

Как я могу запретить UINavigationBar перемещать мой взгляд? Я хочу, чтобы фотография оставалась фиксированной на экране, а панель навигации опускалась над ее верхним сегментом.


person Paul Lynch    schedule 19.05.2010    source источник
comment
Я справился с этим, проигнорировав UINavigationController и представив представление изображения модально. Это работает, но не совсем удовлетворительно.   -  person Paul Lynch    schedule 21.05.2010
comment
Привет, мне удалось решить свою проблему - может быть, это сработает и для вас. Проверьте это: stackoverflow.com/questions/2881905/   -  person Icky    schedule 04.08.2010


Ответы (4)


Я знаю, что это старый вопрос, но я решил это, отключив «Автоизменение размеров вложенных представлений» в Interface Builder.

alt text

person griotspeak    schedule 04.11.2010

Была эта проблема и исправлена ​​с помощью класса, унаследованного от UINavigationController

-(void)viewWillAppear:(BOOL)animated
{
    self.navigationBar.translucent = YES;
}

У меня отлично сработало, мне не нужно было устанавливать стиль на UIBarStyleBlackTranslucent. Так что он сохранил мои цвета.

person MichalMazurek    schedule 22.01.2013

[[navigationController navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
[[navigationController navigationBar] setAutoresizesSubviews:NO];

это, похоже, помогло мне!

person Stultus    schedule 10.11.2011

Мне не удалось найти правильный способ справиться с этим, кроме как установить стиль navigationBar как полупрозрачный, как в:

theNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

Помимо создания еще одной панели навигации и добавления к ним кнопок, это лучший вариант (и, похоже, это то, что Apple делает в своем приложении Photo).

person Terence    schedule 15.12.2010