Переход на UINavigationBar с прозрачным фоновым изображением приводит к мерцанию черного цвета

Я хочу ориентироваться с белого UINavigatinonBarк прозрачному UINavigationBar,

В моем контроллере корневого представления это настройка:

self.navigationController.navigationBar.hidden = NO;
[self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]];
[self.navigationController.navigationBar setTranslucent:NO];

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

// set title of navbar 
self.title = [self.data objectForKey:@"title"];
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
//

// IMPORTANT PART: make the nav bar transaparent - no prerequisites. 
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;

// set custom back button
UIButton *backButton = [[UIButton alloc] initWithFrame: CGRectMake(16, 31, 22, 20)];
UIImage *backImage = [UIImage imageNamed:@"backButtonDetail"];
[backButton setBackgroundImage:backImage  forState:UIControlStateNormal];
[backButton setTitle:@"" forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(popBack) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backButtonItem;

Это идет почти хорошо, за исключением анимации:

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

Я пробовал настройки кастомные UIView под навигационной панелью, но это не сработало.

Я совершенно заблудился о том, как об этом сейчас, и любая помощь будет высоко оценена.

1 ответ

Решение

Я недавно столкнулся с этой же проблемой и смог обойти ее, просто установив цвет фона окна в didFinishLaunchingWithOptions appDelegate

window.backgroundColor = UIColor.whiteColor()

и если у вас еще нет ссылки на окно, то

UIApplication.sharedApplication().delegate?.window.backgroundColor = ...

Я нашел это самое чистое решение. Надеюсь, это поможет, хотя и немного поздно.

Другие вопросы по тегам