UINavigationBar 外观色调颜色影响系统 windows,错误还是有意为之?

UINavigationBar appearance tint color affects system windows, bug or intended?

在iOS10中可以使用这行代码为所有应用设置导航栏的色调:

UINavigationBar.appearance().barTintColor = UIColor.green

然而当在iOS11中做同样的事情时,它似乎也影响了系统视图。例如,当使用以下代码显示 UIActivityViewController 时:

let titleText = "SOME TITLE"
let urlStr = "https://google.com"
let activityItems = [titleText,urlStr]
let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)

并选择 "Add to Notes" 选项,导航栏显示为之前设置的颜色(本例中为绿色)

请问,这是bug还是故意为之?

(我已经在一个多月前向苹果提交了错误报告,但没有得到回复)

这是问题的屏幕截图:

为什么不简单地继承 UINavigationController 并像这样设置外观代理?

UINavigationBar.appearance(whenContainedInInstancesOf: [YourUINavigationControllerSubclass.self]).barTintColor = UIColor.green

这不那么骇人听闻,而且可以解决问题而不会产生任何负面影响。

您可以找到有关该主题的更多信息 here