🦅

【Swift5/Xcode13】スクロールするとNavigationBarのテキストカラーが変わる

2022/02/14に公開

イメージ

こちらがスクロールする前です。

少しでも画面をスクロールするとこのようにNavigationBarのテキストカラーが変更されてしまいます。

現在適用している設定(Xcode13/iOS15対応)

        if #available(iOS 15.0, *) {
            let appearance = UINavigationBarAppearance()
            appearance.configureWithOpaqueBackground()
            appearance.backgroundColor = dataManager.themeColor
            navigationController?.navigationBar.standardAppearance = appearance
            appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
            navigationController?.navigationBar.scrollEdgeAppearance = appearance
        } else {
            navigationController?.navigationBar.barTintColor = dataManager.themeColor
        }

解決方法

スクロールされている時もNavigationBarの設定をappearanceで適用する場合は以下の1行も必要でした。

navigationController?.navigationBar.standardAppearance = appearance

解決後のイメージはこちらです。

無事スクロールしても適用されております。

参考

https://qiita.com/naoking21/items/6fce20d9253ecd65ec69

Discussion