UINavigationBar с большим заголовком не имеет фонового изображения
Я столкнулся с проблемой, когда обновил приложение, чтобы экземпляры UINavigationBar отображали большие заголовки. Дело в том, что на некоторых экранах в моем приложении я не хочу, чтобы UINavigationBar имел цвет тени или фона, поэтому у меня есть метод, позволяющий изменить его внешний вид с "твердого" на "прозрачный" и обратно, Вот код:
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
}
}
Как вы можете видеть, все, что делает этот метод, это изменение полупрозрачного свойства и установка / отмена и shadowImage и backgroundImage. Это работало нормально без использования больших заголовков, там я прикрепляю и изображение того, что делает установка прозрачного внешнего вида:
UINavigationBar без фонового изображения и тени, но с отображением UIBarButtonItems и backButton
С большими заголовками это все еще работает нормально; проблема возникает после установки типа внешнего вида обратно на "сплошной". Я прилагаю еще два изображения, отображающие проблему:
UINavigationBar до сих пор не имеет фона
После прокрутки немного вверх, чтобы свернуть большой заголовок, появляется цвет фона
Дело в том, что фон для навигационной панели отображается только тогда, когда он не отображает большие заголовки. Я не знаю, нужно ли мне менять другое свойство, или это не будет работать с большими заголовками. Любая помощь будет оценена, спасибо заранее.
0 ответов
Я тоже столкнулся с этой проблемой. Мое обходное решение заключалось в том, чтобы установить цвет фона UIView UINavigationController равным цвету фона, который должен иметь UINavigationBar.
Затем установите цвет UINavigationBar на UIClear и полупрозрачный и убедитесь, что UIViewController с большим заголовком не должен выступать за края под верхней панелью.
Это в основном установка фона навигационного контроллера на фон навигационной панели и установка всех фонов сверху на полупрозрачные.