iOS一些bug

iOS15更新之后 导航条和tabbar突然就白了?一招教你变回

2021-10-09  本文已影响0人  百事可乐_0d71

问题探究.

造成这个原因是什么呐?

答: 两个因素.

scrollEdgeAppearance 属性

iOS15 强制适用于所有导航器

当导航控制器包含导航栏和滚动视图时,滚动视图的部分内容将显示在导航栏下方。如果滚动内容的边缘到达该栏,UIKit将在此属性中应用外观设置。如果此属性的值为nil,UIKit将使用standardAppearance属性中的设置,并修改为使用透明背景。如果没有导航控制器管理您的导航栏,UIKit将忽略此属性,并使用导航栏的标准外观。在使用iOS 14或更低版本的应用程序上运行时,此属性适用于标题较大的导航栏。在iOS 15中,此属性适用于所有导航栏。

如何解决.

@NSCopying var scrollEdgeAppearance: UINavigationBarAppearance? { get set }

我们只需要按照UIKit 的最新改动进行适配就好.如下:

Swift:

let appearance = UINavigationBarAppearance()

appearance.configureWithOpaqueBackground()

appearance.backgroundColor =

navigationBar.standardAppearance = appearance;

navigationBar.scrollEdgeAppearance = navigationBar.standardAppearance

OC:

//ios15新特性默认将导航条变透明,以下代码是ios15新特性,将它变回不透明

    if(@available(iOS15.0, *)) {

        UINavigationBarAppearance *appearance = [UINavigationBarAppearance new];

        [appearanceconfigureWithOpaqueBackground];

        appearance.backgroundColor= [UIColorwhiteColor];

//去掉导航栏下的阴影线

        appearance.shadowColor= [UIColorclearColor];

        self.navigationBar.standardAppearance = appearance;

        self.navigationBar.scrollEdgeAppearance=self.navigationBar.standardAppearance;

    }

tabbar:

    if(@available(iOS15.0, *)) {

        UITabBarAppearance *appearance = [UITabBarAppearance new];

        [appearanceconfigureWithOpaqueBackground];

        appearance.backgroundColor= [UIColorwhiteColor];

        self.tabBar.standardAppearance= appearance;

        self.tabBar.scrollEdgeAppearance = self.tabBar.standardAppearance;

    }

上一篇 下一篇

猜你喜欢

热点阅读