欢迎访问丫丫网!

【iOS开发】iOS15更新之后 导航条和tabbar突然就白了解决办法

iOS15更新之后 导航条和tabbar突然就白了,为什么呢?

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;    

 

另外更新iOS15后,UITableView也需要做适配。UITableView 新增属性:sectionHeaderTopPadding,默认给每个组头增加了高度。如何保持原样不变,只需添加如下代码:

OC:

if (@available(iOS 15.0, *)) {
    tableView.sectionHeaderTopPadding = 0;
}
 
Swift:
if #available(iOS15.0,*){
    tableView.sectionHeaderTopPadding=0
}