Как изменить размер фонового изображения UINavigationBarAppearance

Я пытаюсь добавить фоновое изображение на панель навигации с помощью UINavigationBarAppearance. Однако размер imageView больше, чем вид содержимого панели навигации. Как это исправить?

Результат: обратите внимание, что изображение перекрывается с безопасной областью.

Отладчик Heiarchy

Код:

  private func setupNavBar() {
    navigationItem.largeTitleDisplayMode = .never
    guard let navigationController = navigationController else { return }
    let appearance = navigationController.navigationBar.standardAppearance.copy()
    appearance.configureWithTransparentBackground()
    appearance.backgroundImage = UIImage.checkmark
    appearance.backgroundImageContentMode = .scaleAspectFit
    appearance.backgroundColor = .red
    navigationController.navigationBar.standardAppearance = appearance
  }

1 ответ

Решение

Нашел альтернативу. Вместо использования фонового изображения внешнего вида я установил titleView в элементе навигации.

let imageView = UIImageView(image: UIImage.checkmark)
imageView.contentMode = .scaleAspectFit
navigationItem.titleView = imageView
Другие вопросы по тегам