UINavigationBar 始终具有模糊效果

问题描述 投票:0回答:1

至少在 iOS 16 上,当您滚动时

UITableView
导航栏会变得模糊。但是当我们没有任何滚动时,如何强制
UINavigationBar
变得模糊?

我很确定这是一个很常见的问题,但我找不到答案。所有答案都太旧了。

ios swift uiscrollview uinavigationcontroller
1个回答
0
投票

根据您的见解,如果我没有弄错的话,您希望 UINavigationBar 的外观始终具有模糊效果,即使其下方没有内容也是如此。

iOS 13

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 值。

standardAppearance Screenshot

scrollEdgeAppearance Screenshot

© www.soinside.com 2019 - 2024. All rights reserved.