UINavigationBar.внешний вид().серебристые не работают

#ios #swift #ios14 #uiappearance

Вопрос:

Когда я использую это:

     UINavigationBar.appearance().backgroundColor = UIColor(named: "brown")
 

Я получаю навигационную панель, которая имеет правильный коричневый цвет и полупрозрачна.

навигационная панель с полупрозрачным коричневым цветом

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

     UINavigationBar.appearance().backgroundColor = UIColor(named: "brown")
    UINavigationBar.appearance().isTranslucent = false
 

навигационная панель вся белая

Что я делаю не так?

Ответ №1:

Ты совершенно не на то дерево лаешь. Оставь isTranslucent в покое! Не устанавливайте никаких свойств панели навигации напрямую! Используйте UINavigationBarAppearance для выполнения настройки. Например:

 let app = UINavigationBarAppearance()
app.configureWithOpaqueBackground()
app.backgroundColor = .brown
UINavigationBar.appearance().standardAppearance = app
UINavigationBar.appearance().scrollEdgeAppearance = app
 

Комментарии:

1. Ах, эта новая вещь была добавлена в iOS 13, и я этого не осознавал. Спасибо!

2. Увидеть мой biteinteractive.com/the-ios-developers-guide-to-ios14 вот список вещей, которые вы, возможно, пропустили.

Ответ №2:

Вы можете подать заявку:

 UINavigationBar.appearance().barTintColor = UIColor(named: "brown")
 

Я думаю backgroundColor , что в данном случае одних изменений недостаточно.