Почему не меняется цвет фона панели навигации? - PullRequest
3 голосов
/ 12 июля 2020

Мне нужно изменить цвет фона панели навигации, когда пользователь выбирает другой стиль темы.

Но странно то, что после того, как пользователь выберет «Темный» режим, затем войдет в задний план, а затем снова на передний план , если пользователь хочет вернуться в режим «Light», панель навигации по-прежнему имеет черный цвет, а «_UIVisualEffectBackdropView» остается темным.

Но если пользователь выбирает режим «Light» перед переходом в фоновый режим , то все работает нормально.

Как исправить этот баг? Ниже приведен код & pi c:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    switch indexPath.row {
    case 0:
        self.changeToLightColor()
    default:
        self.changeToDarkColor()
    }
}

private func changeToLightColor() {
    self.navigationController?.navigationBar.barStyle = .default
    
    let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemBlue]
    self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}

private func changeToDarkColor() {
    self.navigationController?.navigationBar.barStyle = .black
    
    let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemGreen]
    self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}

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

Большое спасибо за вашу помощь и ответ заранее!

1 Ответ

2 голосов
/ 12 июля 2020

Что ж, потребовалось немного времени, чтобы выяснить, как это исправить, и решение очень простое.

Просто установите barTintColor в navigationBar на нужный вам цвет.

private func changeToLightColor() {
    self.navigationController?.navigationBar.barStyle = .default
    
    //Set to white color
    self.navigationController?.navigationBar.barTintColor = UIColor.white
    
    let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemBlue]
    self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}

private func changeToDarkColor() {
    self.navigationController?.navigationBar.barStyle = .black
            
    //Set to black color
    self.navigationController?.navigationBar.barTintColor = UIColor.black

    let textAttribute = [NSAttributedString.Key.foregroundColor: UIColor.systemGreen]
    self.navigationController?.navigationBar.titleTextAttributes = textAttribute
}

После того как я это сделал, проблема исчезла

...