前提:在我电脑上的?xcode 升级到?13? 之后,编译工程时发现在iOS15的设备上有些方法失效,主要表现在 UINavigationBar、UITableView、UITabbar这三方面上,通过查询资料后解决了此类iOS15的适配问题,以下将解决方法放在下方:
1、UINavigationBar
前提说明:通过参考网上大牛写的一些简书和查看API后发现:iOS13更新后,NavigationBar 的相关属性设置要通过实例 UINavigationBarAppearance 来实现,但是以前的设置方法并不会失效,所以没有多注意到这块,现在 iOS15上失效了,所以对于出现的问题做了如下调整:
if(@available(iOS15.0,*)){
UINavigationBarAppearance *appoerance = [[UINavigationBarAppearance alloc] init];
appoerance.backgroundColor = [UIColor whiteColor];
[appoerance setTitleTextAttributes:@{NSForegroundColorAttributeName: kC_M_B, NSFontAttributeName: KF_H_F(18)}];
appoerance.shadowImage = [[UIImage alloc] init];
appoerance.shadowColor = nil;
self.navigationController.navigationBar.standardAppearance = appoerance;
self.navigationController.navigationBar.scrollEdgeAppearance = appoerance;
}
以上是OC的写法,Swift写法如下:
if #available(iOS13.0,*){
let appearance=UINavigationBarAppearance()
appearance.backgroundColor=.white
appearance.shadowColor=UIColor.clear
appearance.titleTextAttributes=[NSAttributedString.Key.foregroundColor:UIColor.white]
navigationController?.navigationBar.scrollEdgeAppearance=appearance
navigationController?.navigationBar.standardAppearance=appearance
}
2、UITableView
前提说明:UITableView 新增属性:sectionHeaderTopPadding,默认给每个组头增加了高度,代码如下:
OC:
if (@available(iOS 15.0, *)) {
tableView.sectionHeaderTopPadding = 0;
}
Swift:
if #available(iOS15.0,*){
tableView.sectionHeaderTopPadding=0
}
3、UITabbar
前提说明:与 UINavigationBar问题相同,但这里就是 UITabBarAppearance实例了,代码如下:
OC:
if(@available(iOS13.0,*)){
UITabBarAppearance*appearance=[[UITabBarAppearance alloc]init];
appearance.backgroundColor=[UIColor whiteColor];
self.tabBar.standardAppearance=appearance;
if(@available(iOS15.0,*)){
self.tabBar.scrollEdgeAppearance=appearance;
}
}
Swift:
if #available(iOS13.0,*){
let appearance=UITabBarAppearance()
appearance.backgroundColor=.white? ? ? ? ? ?
tabBar.standardAppearance=appearance
if #available(iOS15.0,*){
tabBar.scrollEdgeAppearance=appearance
}
}
|