1. iOS15的UITableView在style设置为UITableViewStylePlain的情况下,默认会给每个section的header下移大概22像素,可以设置sectionHeaderTopPadding变量来改变该下移的像素量。
self.tableView.sectionHeaderTopPadding = 0;
  1. iOS15导航栏颜色透明问题以及随scrollView透明度变化的效果,可以设置navigationBar.scrollEdgeAppearance属性来适配该效果,这个属性包括一些展示样式的设置、比如导航栏的背景色,分割线的样式。
UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init];
[appearance configureWithTransparentBackground];
appearance.backgroundColor = [UIColor whiteColor];
appearance.shadowColor = [UIColor lightGrayColor];
appearance.titleTextAttributes = @{
NSForegroundColorAttributeName: [UIColor redColor]
};

self.navigationBar.standardAppearance = appearance;
self.navigationBar.scrollEdgeAppearance = appearance;
  1. 设置UITabBar样式尽量使用UITabBarAppearance设置,iOS15需要设置tabBar.scrollEdgeAppearance属性,默认可以和tabBar.standardAppearance设置一致。
UITabBarAppearance *appearance = [[UITabBarAppearance alloc] init];
[appearance configureWithTransparentBackground];

appearance.backgroundColor = [UIColor redColor];
appearance.shadowColor = [UIColor blueColor];

// iPad landspace全屏、2/3、portrait全屏状态下的TabBar样式
appearance.inlineLayoutAppearance.normal.iconColor = [UIColor blueColor];
appearance.inlineLayoutAppearance.normal.titleTextAttributes = @{
NSForegroundColorAttributeName: [UIColor blueColor]
};

appearance.inlineLayoutAppearance.selected.iconColor = [UIColor orangeColor];
appearance.inlineLayoutAppearance.selected.titleTextAttributes = @{
NSForegroundColorAttributeName: [UIColor orangeColor]
};

// iPad landspace分屏1/1、1/3、portrai分屏和浮动窗口状态下、iPhone竖屏的TabBar样式
appearance.stackedLayoutAppearance.normal.iconColor = [UIColor yellowColor];
appearance.stackedLayoutAppearance.normal.titleTextAttributes = @{
NSForegroundColorAttributeName: [UIColor yellowColor]
};

appearance.stackedLayoutAppearance.selected.iconColor = [UIColor orangeColor];
appearance.stackedLayoutAppearance.selected.titleTextAttributes = @{
NSForegroundColorAttributeName: [UIColor orangeColor]
};

// iPhone竖屏的TabBar样式
appearance.compactInlineLayoutAppearance.normal.iconColor = [UIColor greenColor];
appearance.compactInlineLayoutAppearance.normal.titleTextAttributes = @{
NSForegroundColorAttributeName: [UIColor greenColor]
};

appearance.compactInlineLayoutAppearance.selected.iconColor = [UIColor orangeColor];
appearance.compactInlineLayoutAppearance.selected.titleTextAttributes = @{
NSForegroundColorAttributeName: [UIColor orangeColor]
};

self.tabBar.standardAppearance = appearance;
self.tabBar.scrollEdgeAppearance = appearance;
  1. UIToolBar如果出现拖动页面变透明,但不需要此效果时,可以设置toolbar.scrollEdgeAppearance变量与toolbar.standardAppearance一致即可。
UIToolbarAppearance *toolbarAppearance = [[UIToolbarAppearance alloc] init];
[toolbarAppearance configureWithTransparentBackground];
toolbarAppearance.backgroundColor = [UIColor whiteColor];

self.toolbar.standardAppearance = toolbarAppearance;
self.toolbar.scrollEdgeAppearance = toolbarAppearance;
  1. Xcode13新项目使用pod命令需要更新至少到1.11。
sudo gem uninstall cocoapods cocoapods-core cocoapods-deintegrate cocoapods-downloader cocoapods-plugins cocoapods-search cocoapods-trunk cocoapods-try
sudo gem install cocoapods
  1. iPhone 12以上的机型导航栏高度有变化,值为47,获取状态栏高度使用UIApplicationstatusBarFrameUIWindowScenestatusBarManager去获取。
CGFloat statusBarHeight = 0;
if (@available(iOS 13.0, *)) {
for (UIWindowScene *scene in [UIApplication sharedApplication].connectedScenes) {
if ([scene isKindOfClass:UIWindowScene.class]) {
statusBarHeight = [(UIWindowScene *)[UIApplication sharedApplication].connectedScenes.anyObject statusBarManager].statusBarFrame.size.height;
}
}
} else {
// Fallback on earlier versions
statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
}
  1. 未完待续……