无法更改 iOS 13 中大标题的导航栏色调颜色

Unable to change the Navigation bar tint color for large titles in iOS 13

代码:

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        UINavigationBar.appearance().barTintColor = .red

        return true
    }

如果 prefersLargetitles 为 false 则没有问题。 但是使用 prefersLargeTitles = true,颜色不会改变。 这曾经与 iOS 12 一起使用。但是由于 iOS 13 这不起作用。任何人都可以帮助如何在 iOS 13

中自定义导航栏

iOS13 中的导航栏外观发生了一些变化,默认情况下,如果关联视图控制器具有可滚动内容,导航栏将变为透明。

在这种情况下,您应该创建一个 UINavigationBarAppearance 对象并将其分配给 compactAppearancescrollEdgeAppearance。您也可以更改 UINavigationBarAppearance 对象的属性。

if #available(iOS 13.0, *) {
    let appearance = UINavigationBarAppearance()
    appearance.backgroundColor = .purple
    UINavigationBar.appearance().compactAppearance = appearance
    UINavigationBar.appearance().scrollEdgeAppearance = appearance
} else {
    UINavigationBar.appearance().barTintColor = .purple
}

您可以在 & iOS13release_notes

找到更多详细信息