UINavigation Bar 外观色调在 iOS 16 上无效。

7

我正在使用SwiftUI,目前通过以下方式全局设置导航栏返回按钮的色调:

UINavigationBar.appearance().tintColor = .black

升级到Xcode14并在iOS 16模拟器上构建后,我发现我设置的色调被忽略了,并且默认为系统蓝色色调。

我发现使用以下方法可以使其看起来符合预期:

let image = UIImage(systemName: "chevron.backward")?.withTintColor(.black, renderingMode: .alwaysOriginal)
appearance.setBackIndicatorImage(image, transitionMaskImage: image)

然而,我很好奇是否有更优雅的方法在iOS 16中全局控制色调的能力恢复

1个回答

7

在iOS 16中使用SwiftUI,要全局设置导航栏返回按钮的色调颜色,请在Assets.xcassets中配置AccentColor。 在Xcode 14中配置AccentColor


1
又一个iOS版本,外观API又加入了一个变化(破坏?)。这个可行,谢谢Ron! - Luis Ascorbe
对我来说,在Assets.xcassets中设置AccentColor在使用新的iOS 16 NavigationStack时不够用。我必须手动在NavigationStack上设置.tint(...)。(在NavigationStack上使用已弃用的.accentColor(...)视图修饰符似乎也可以工作)。 - Araxias
1
但是如果我想为导航栏设置不同的色调,该怎么办呢?这样就会有两种不同的色调——一种适用于整个应用程序(按钮等),另一种适用于导航栏。 - alexkaessner
@alexkaessner 我找到的唯一解决方案是在 NavigationStack 上设置 .tint,然后给其子视图 .tint(Color("AnotherColor"))。缺点是你必须为堆栈中的每个视图都设置它。 - Randex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接