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、设置view
的clipsToBounds
为YES
,我遇到就是这个collectionView
的clipsToBounds
竟然默认就是YES
。
2、view
的backgroundColor
为clearColor
。
3、layer
的阴影参数设置错误。
三、iOS15下UITableView顶部多出了一条空白
查资料发现iOS15 中 UITableView
新加了一个属性:sectionHeaderTopPadding
,默认值为 automaticDimension
,就会导致顶部多出一条空白。
if (@available(iOS 15.0, *)) {
self.tableView.sectionHeaderTopPadding = 0;
}