iOS基础

iOS15-导航条、UITableView

2021-11-11  本文已影响0人  小驴拉磨

一、导航条
在iOS 13 UINavigationBar新增了scrollEdgeAppearance属性,但在iOS 14及更早的版本中此属性只应用在大标题导航栏上。在iOS 15中此属性适用于所有导航栏,导致iOS15系统下之前设置会有些失效,表现情况有透明的有了颜色或者变成白色。
scrollEdgeAppearance:主要针对视图中存在滚动视图顶部根据导航条底部布局的情况。
我遇到的问题:就是列表跑到导航条下面去了。
我开始用如下代码

/// 设置NavigationBar的背景色
- (void)setNavigationBarAppearance
{
    UIImage *navBackgroundImage = [UIImage imageWithColor:self.navigationBarBackgroundColor size:self.navigationController.navigationBar.size];
    if (@available(iOS 15.0, *)) {
        self.navigationBarAppearance = [UINavigationBarAppearance new];
        self.navigationBarAppearance.backgroundColor = self.navigationBarBackgroundColor;
        self.navigationBarAppearance.backgroundImage = navBackgroundImage;
        self.navigationBarAppearance.backgroundEffect = nil;
        self.navigationBarAppearance.shadowColor = self.navigationBarBackgroundColor;
        self.navigationBarAppearance.titleTextAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:20.0f],
                                       NSForegroundColorAttributeName:QH_title_color(title_000000_000000)};
        self.navigationController.navigationBar.scrollEdgeAppearance = self.navigationBarAppearance;
        self.navigationController.navigationBar.standardAppearance = self.navigationBarAppearance;
    }else{
        //背景色
        [self.navigationController.navigationBar setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];
        [self.navigationController.navigationBar setBarTintColor:[UIColor clearColor]];
        [self.navigationController.navigationBar setTitleTextAttributes:
         @{NSFontAttributeName:[UIFont systemFontOfSize:20.0f],
                                        NSForegroundColorAttributeName:QH_title_color(title_000000_000000)}];
        [self.navigationController.navigationBar setShadowImage:[UIImage new]];
    }
}

但是没有效果,经过检查发现是因为self.navigationController.navigationBar.translucent的问题

二、阴影设置不生效的问题
给collectionView设置阴影怎么都不显示,frame、masksToBounds等都检查就是不管用,经过多方验证,设置view等的阴影不成功的原因有以下几种:
1、设置viewclipsToBoundsYES,我遇到就是这个collectionViewclipsToBounds竟然默认就是YES
2、viewbackgroundColorclearColor
3、layer的阴影参数设置错误。

三、iOS15下UITableView顶部多出了一条空白
查资料发现iOS15 中 UITableView 新加了一个属性:sectionHeaderTopPadding,默认值为 automaticDimension,就会导致顶部多出一条空白。

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

上一篇下一篇

猜你喜欢

热点阅读