今天重构项目的时候把TabbarController重新整理了下,设置tabbar通明背景的时候一直设置不成功,于是使用XCode看了下图层排查原因:
在网上查找了下关于这个_UIBarBackground,找到下边这个回答:
[self.tabBar.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:NSClassFromString(@"_UIBarBackground")]) {
obj.hidden = YES;
}
}];
但是打印tabBar.subviews的时候并不会打印出来_UIBarBackground。
后来又找一个别的解决方案:
if (@available(iOS 13.0, *)) {
[self.tabBar.standardAppearance configureWithTransparentBackground];//standardAppearance的关键词是copy,直接调用无效果。
UITabBarAppearance *apperance = self.tabBar.standardAppearance
[apperance configureWithTransparentBackground];
// Reset background and shadow properties to be transparent.重置背景和阴影属性为透明。
self.tabBar.standardAppearance = apperance;
} else {
UIImage *image = [UIImage imageWithColor:[UIColor clearColor]];
//生成一个纯色图片的自定义方法,不多介绍
self.tabBar.backgroundImage = image;
self.tabBar.shadowImage = image;
self.tabBar.translucent = YES;
//没有IOS12的机子,暂时没有测试是否有效。
}
设置之后的图层: