UINavigationBar с большим заголовком не имеет фонового изображения - PullRequest
0 голосов
/ 03 июля 2018

Я столкнулся с проблемой при обновлении приложения, чтобы экземпляры UINavigationBar отображали большие заголовки. Дело в том, что на некоторых экранах моего приложения я не хочу, чтобы UINavigationBar имел либо shadow, либо backgroundColor, поэтому у меня есть способ изменить его внешний вид с "твердого" состояния на "прозрачное" "один и обратно. Вот код:

public static func setNavAppearance(type: AppearanceType, navigationBar: UINavigationBar?) {

    if (type == .transparent) {
        navigationBar?.setBackgroundImage(UIImage.init(), for: .default)
        navigationBar?.shadowImage = UIImage.init()
        navigationBar?.isTranslucent = true
    }
    else {
        navigationBar?.shadowImage = nil
        navigationBar?.setBackgroundImage(nil, for: UIBarMetrics.default)
        navigationBar?.isTranslucent = false
    }
}

Как вы можете видеть, все, что делает этот метод, это изменение свойства translucent и установка / сброс как shadowImage, так и backgroundImage. Это работало нормально без использования больших заголовков, там я прилагаю и изображение того, что делает установка прозрачного внешнего вида:

UINavigationBar без фонового изображения и тени, но с отображением UIBarButtonItems и backButton

С большими заголовками это все еще работает нормально; проблема возникает после установки типа внешнего вида обратно на «сплошной». Я прилагаю еще два изображения, отображающие проблему:

UINavigationBar по-прежнему не имеет фона

После прокрутки немного вверх, чтобы свернуть большой заголовок, появляется цвет фона

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

...