Переход на 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 = ...
Я нашел это самое чистое решение. Надеюсь, это поможет, хотя и немного поздно.