Подтвердить что ты не робот

UINavigationBar цвет фона не точный UIColor Я установил его

Посмотрите снимок экрана ниже.

Я установил все цвета оттенков из одного и того же объекта UIColor для панели UINavigationBar, панели поиска и панели инструментов внизу. Но почему-то цвет навигационной панели несколько отличается. Что может быть причиной этого?

Спасибо..

screenshot

4b9b3361

Ответ 1

Разница между панелью навигации и панелью поиска состоит в том, что панель навигации полупрозрачна, система будет применять значение альфа-значения по умолчанию для панели навигации.

Попробуйте self.navigationController.navigationBar.translucent = NO;

Ответ 2

UINavigationBar имеет немного странное поведение, когда дело доходит до цвета, который вы установили на нем. Как отмечали другие участники, вам нужно установить translucent boolean на false, но это не все, чтобы ваша панель соответствовала цвету, который вы пытаетесь установить. Он будет близок, но если вы посмотрите внимательно, это не будет точный цвет, который вы пытаетесь использовать. Чтобы установить истинный цвет на UINavigationBar, вам нужно понять, что он делает.

Скажем, что я хотел установить мой UINavigationBar в этот классный зеленый цвет.

введите описание изображения здесь

Это будет значение RGB: R = 90 | G = 200 | В = 95.

Что UINavigationBar будет делать, это применить его встроенный стиль, придав этому зеленому "глянцевый" вид. Для нас результат заключается в том, что он берет наши зеленые значения RGB и увеличивает их в 20 раз.

введите описание изображения здесь

Если вы посмотрите близко, зеленый квадрат выше точно не соответствует значению UINavigationBar с теми же значениями RGB. Это выглядит немного ярче.

Чтобы исправить это, просто уменьшите значения RBG на 20 для цвета, который вы намерены использовать для UINavigationBar в своем приложении.

So R = 90 | G = 200 | B = 95 станет R = 70 | G = 180 | В = 75.

введите описание изображения здесь

Ответ 3

Он отличается из-за эффекта размытия UINavigationBar. Я могу предложить установить 2px ширину растягиваемое фоновое изображение с вашим цветом. Что-то вроде этого:

    UIImage *image = [UIImage imageNamed:@"yourBlueImage"];
    image = [image stretchableImageWithLeftCapWidth:image.size.width / 2.0f topCapHeight:0.0f];
    [yourNavBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

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

Ответ 4

navigationBar.barStyle = UIBarStyle.blackOpaque

Работала для предотвращения нежелательного смешивания с фоном, когда ни один из предыдущих ответов не работал (в iOS 9.3).

Ответ 5

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

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

После того, как это сделано. BackgroundColor по-прежнему не так. Так что не устанавливайте BackgroundColor, установите TintColor для NavBar. Вы можете сделать это так же, как полупрозрачный. Возможность установить TintColor 2 элемента под полупрозрачным флажком.

Или вы устанавливаете его с помощью swift или objC:

self.navigationController?.navigationBar.isTranslucent = false  
navBar.barTintColor = UIColor.CustomColor.colorPrimary

Ответ 6

Попробуйте это, это работает

navigationController?.navigationBar.shadowImage = UIImage() navigationController?.navigationBar.setBackgroundImage(UIImage(), для:.default)

Ответ 7

У меня была такая же проблема, как у оп. После нескольких часов неудачных попыток я решил изменить логику в моем коде:

Сначала установите цвет фона панели навигации:

navigationBar.barTintColor = UIColor.red

iOS сделает красный цвет немного темнее/светлее, как описано другими в этой теме.

Во-вторых, возьмите цвет панели навигации и установите для него то, что вам нужно, в моем случае фон ячейки:

cell.backgroundColor = navigationBar.barTintColor

Теперь цвета будут такими же.

Ответ 8

У меня была такая же проблема со мной раньше. Полностью закрыв Xcode, исправил проблему для меня.