iOS 13 и Xcode 11 - UINavigationBar неработающая прокрутка для больших названий - PullRequest
0 голосов
/ 24 сентября 2019

На iOS 12 и Xcode 10.3 у меня не было проблем с прокруткой больших титров, но с тем же кодом, Xcode 11 и iOS 13, я столкнулся с проблемой, как показано в следующем GIF:

enter image description here

В то время как на iOS 12 у меня была навигационная панель с нужным поведением, а именно:

enter image description here

Кто-то сталкивался с такой же проблемой?В остальном я, конечно, использую prefersLargeTitles = true, и я уверен, что код, который я использую, один и тот же для этих 2 разных поведений.Спасибо за любую помощь

1 Ответ

1 голос
/ 24 сентября 2019

Я нашел решение для этого после некоторого расследования, поэтому я поделюсь своими выводами, так как думаю, что может помочь некоторым людям.Решение состоит в том, что с iOS 13 нам нужно работать с UINavigationBarAppearance.После того, как мы создали этот объект, мы можем назначить его некоторым новым свойствам:

  1. standardAppearance
  2. compactAppearance
  3. scrollEdgeAppearance (этотв частности, вероятно, причина моей ошибки)

Я публикую пример этого расширения:

extension UINavigationBar {

    func setupLarge() {
        // ... Set up here your tintColor, isTranslucent and other properties if you need

        if #available(iOS 11.0, *) {
            prefersLargeTitles = true
            //largeTitleTextAttributes = ...Set your attributes
        }

        if #available(iOS 13.0, *) {
            let appearance = UINavigationBarAppearance()
            appearance.backgroundColor = barTintColor
            appearance.titleTextAttributes = [.foregroundColor: UIColor.white]
            appearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]

            standardAppearance = appearance
            compactAppearance = appearance
            scrollEdgeAppearance = appearance
        }
    }
}
...