至少在 iOS 16 上,当您滚动时
UITableView
导航栏会变得模糊。但是当我们没有任何滚动时,如何强制 UINavigationBar
变得模糊?
我很确定这是一个很常见的问题,但我找不到答案。所有答案都太旧了。
根据您的见解,如果我没有弄错的话,您希望 UINavigationBar 的外观始终具有模糊效果,即使其下方没有内容也是如此。
UINavigationBar 有一个名为
appearance()
的属性,可让您基于 UINavigationBarAppearance()
类配置导航栏的外观。
此类允许您配置与导航栏相关的所有属性,包括其外观。
当导航控制器同时包含导航栏和滚动视图时,如果滚动视图的部分内容出现在导航栏下方,则scrollEdgeAppearance生效;否则,适用标准外观属性。
如果将两者配置为具有相同的效果,则导航栏不会过渡,并且效果将持续存在。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let navAppearance = UINavigationBarAppearance()
navAppearance.backgroundEffect = UIBlurEffect(style: .regular)
UINavigationBar.appearance().standardAppearance = navAppearance
UINavigationBar.appearance().scrollEdgeAppearance = navAppearance
return true
}
这样,导航栏将始终保持模糊状态。
请记住,导航栏上没有任何内容的模糊效果将导致背景颜色应用 alfa 值。