iOS15适配

更新到iOS15后,会发现导航栏和tableview的UI发生变化了,应做以下适配

1.新特性 sectionHeaderTopPadding

Xcode13打包之后运行
在IOS15下
TableView UITableViewStyle设置样式为UITableViewStylePlain时
并且设置了tableHeaderView的情况下在IOS15会默认给头部视图一个高度,sectionHeaderTopPadding
需要在IOS15下单独判断

if (@available(iOS 15.0, *)) {
    _tableView.sectionHeaderTopPadding = 0;
}

TableView UITableViewStyle设置样式为UITableViewStyleGrouped是也出现了上边距问题
解决:
self.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
self.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
这种情况可能是系统给了默认边距

  1. UINavigation导航栏颜色问题

IOS15新增属性 UINavigationBarAppearance
用来设置字体、颜色等

    if (@available(iOS 15.0, *)) {
        UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init];
        // 背景色
        appearance.backgroundColor = [UIColor whiteColor];
        // 去掉半透明效果
        appearance.backgroundEffect = nil;
        // 标题字体颜色及大小
        appearance.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor blackColor],NSFontAttributeName:[UIFont fontWithName:@"PingFangSC-Medium" size:16]};
        // 设置导航栏下边界分割线透明
        appearance.shadowImage = [[UIImage alloc] init];
        // 去除导航栏阴影(如果不设置clear,导航栏底下会有一条阴影线)
        appearance.shadowColor = KlineColor;
        // standardAppearance:常规状态, 标准外观,iOS15之后不设置的时候,导航栏背景透明
        self.navigationBar.standardAppearance = appearance;
        // scrollEdgeAppearance:被scrollview向下拉的状态, 滚动时外观,不设置的时候,使用标准外观
        self.navigationBar.scrollEdgeAppearance = appearance;
    }

你可能感兴趣的:(iOS15适配)