Как сохранить прозрачность UINavigationBar UINavigationController при модальном представлении контроллера? - PullRequest
1 голос
/ 21 июня 2011

У меня есть полноэкранный вид внутри UINavigationController.Когда я пытаюсь представить модальное представление поверх него, UINavigationBar меняется на непрозрачный, опуская содержимое, до того, как модальное представление анимируется.Как это предотвратить?

ContextMenuViewController *cmvc = 
    [[ContextMenuViewController alloc] initWithNibName:nil bundle:nil];
[cmvc setDelegate:self];
UINavigationController *navControl = 
    [[UINavigationController alloc] initWithRootViewController:cmvc];
[cmvc release];
[navControl.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
[self.navigationController presentModalViewController:navControl animated:YES];
[navControl release];
[[UIApplication sharedApplication] 
    setStatusBarStyle:UIStatusBarStyleBlackTranslucent 
             animated:NO];

Корневое представление UINavigationController не имеет никакой прозрачности (строка состояния или UINavigationBar), прозрачность есть только у выдвинутых контроллеров.видеоролик о проблеме: http://www.youtube.com/watch?v=KSFvzTR5Ejk

Пример источника по адресу: http://cl.ly/7lu2

Ответы [ 3 ]

0 голосов
/ 21 июня 2011

Попробуйте установить стили панели во время viewDidLoad для корневого View Controller.

0 голосов
/ 10 ноября 2011

ЗДЕСЬ ТЫ ИДЕШЬ)

OptionsViewController * detailViewController = [[OptionsViewController alloc] initWithNibName: @ "OptionsViewController" bundle: nil];

UINavigationController * optionsController = [[UINavigationController alloc] initWithRootViewController: detailViewController];

[выпуск detailViewController];

optionsController.navigationBar.translucent = YES; optionsController.navigationBar.opaque = YES; optionsController.navigationBar.tintColor = [UIColor clearColor]; optionsController.navigationBar.backgroundColor = [UIColor clearColor]; * * 1 010

optionsController.modalTransitionStyle = UIModalTransitionStyleFlipHor horizontal; [self presentModalViewController: optionsController animated: YES];

[релиз optionsController];

0 голосов
/ 21 июня 2011

Я попробовал ваш код в очень маленьком тестовом проекте и не увидел описанную вами проблему. Я предлагаю вам сделать то же самое. Начните с шаблона приложения на основе навигации. В главном наконечнике установите флажок «Полноэкранный режим« Требует полноэкранного режима »и измените размер с помощью наконечника навигационного контроллера и сделайте его навигационную панель прозрачной. В кончике контроллера корневого представления поместите кнопку, на которую вы можете ответить, настройте действие и вставьте свой код. Создайте класс ContextMenuViewController; нет необходимости давать ему перо.

Запустите приложение и нажмите кнопку. Модальное представление перемещается на место с прозрачной панелью навигации, не затрагивая прозрачность уже существующей панели навигации и не перемещая существующее содержимое.

Итак, теперь, когда вы доказали себе, что он работает в этом простом проекте, это просто вопрос того, что вы делаете, отличается от того, что вы делаете в реальном проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...