iOS 11-12 фоновое изображение большого заголовка для большого штата - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь установить разные цвета для разных состояний большого заголовка панели навигации. Для основного состояния большого заголовка (когда он большой и не прокручивается) панель должна иметь grayColor (я устанавливаю цвет barTint), но когда пользователь прокручивает контент и панель прикрепляется к верху (переходит в UIBarPosition.topAttached), она должна иметь белый цвет, поэтому я устанавливаю фоновое изображение для состояния .topAttached, и из-за этого изображения мой цвет barTint игнорируется.

Я попытался установить фоновое изображение для всех возможных панелей навигации UIBarPosition и UIBarMetrics, а также для изображения состояния topAttached работает хорошо, но для большого состояния так и не появилось. Пример:

bar.setBackgroundImage(.pixel(color: UIColor.red), for: .any, barMetrics: .default)
bar.setBackgroundImage(.pixel(color: UIColor.green), for: .topAttached, barMetrics: .default)
bar.setBackgroundImage(.pixel(color: UIColor.blue), for: .bottom, barMetrics: .default)
bar.setBackgroundImage(.pixel(color: UIColor.purple), for: .top, barMetrics: .default)

Есть ли способ сделать разные цвета для разных состояний больших заголовков в iOS 11-12?

1 Ответ

0 голосов
/ 23 июня 2020

Наконец найдено решение, работает для iOS 11-12:

 let observer = navBar.observe(\.frame, changeHandler: { (bar, frame) in
            if navBar.frame.height <= 44 {
                navBar.barTintColor = UIColor.lightGray
                navBar.shadowImage = imageForShadow
            }
            else {
                navBar.barTintColor = UIColor.white
                navBar.shadowImage = UIImage()
            }
        })
...