1、处理UINavigationBar默认为透明方法
//OC
if (@available(iOS 13.0, *)) {
UINavigationBarAppearance * appearance = [[UINavigationBarAppearance alloc] init];
// 背景色
appearance.backgroundColor = [UIColor whiteColor];
// 去除导航栏阴影(如果不设置clear,导航栏底下会有一条阴影线)
appearance.shadowColor = [UIColor clearColor];
// 字体颜色、尺寸等
appearance.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor redColor]};
// 带scroll滑动的页面
self.navigationController.navigationBar.scrollEdgeAppearance = appearance;
// 常规页面
self.navigationController.navigationBar.standardAppearance = appearance;
}
//Swift
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
// 设置导航栏背景色
appearance.backgroundColor = .white
// 去除导航栏阴影(如果不设置clear,导航栏底下会有一条阴影线)
appearance.shadowColor = UIColor.clear
// 字体颜色、尺寸等
appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
// 带scroll滑动的页面
navigationController?.navigationBar.scrollEdgeAppearance = appearance
// 常规页面
navigationController?.navigationBar.standardAppearance = appearance
}
2、同样的UITabBar也需要用UITabBarAppearance来设置属性:
//OC
if (@available(iOS 13.0, *)) {
UITabBarAppearance * appearance = [[UITabBarAppearance alloc] init];
// 背景色
appearance.backgroundColor = [UIColor whiteColor];
self.tabBar.standardAppearance = appearance;
if (@available(iOS 15.0, *)) {
self.tabBar.scrollEdgeAppearance = appearance;
}
}
//swift
if #available(iOS 13.0, *) {
let appearance = UITabBarAppearance()
// 背景色
appearance.backgroundColor = .white
tabBar.standardAppearance = appearance
if #available(iOS 15.0, *) {
tabBar.scrollEdgeAppearance = appearance
}
}
3、UITableView错位问题:
//Swift
if #available(iOS 15.0, *) {
tableView.sectionHeaderTopPadding = 0
}
//或者appdelegate全局设置
if #available(iOS 15.0, *) {
UITableView.appearance().sectionHeaderTopPadding = 0
}
//OC
if (@available(iOS 15.0, *)) {
tableView.sectionHeaderTopPadding = 0;
}
//或者appdelegate全局设置
if (@available(iOS 15.0, *)) {
[UITableView appearance].sectionHeaderTopPadding = 0;
}