Я столкнулся с проблемой при обновлении приложения, чтобы экземпляры 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
, когда он не отображает большие заголовки. Я не знаю, нужно ли мне менять другое свойство, или это не будет работать с большими заголовками. Любая помощь будет оценена, спасибо заранее.