【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
}