iOS隐藏UITabBar顶部黑线
2024-06-05 本文已影响0人
lucky_lee
经过图层的分析与打印输出,在tabbar的顶部有一个类型为_UIBarBackgroundShadowContentImageView高度为1的细线。
考虑系统版本的兼容性,可以采用自定义Tabbar(继承于UITabBar),然后将重写tabbar的- (void)layoutSubviews
方法将其隐藏。
具体代码如下:
@implementation CustomTabBar
- (void)layoutSubviews{
[super layoutSubviews];
[self.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:NSClassFromString(@"_UIBarBackground")]) {
[obj.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj2, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj2 isKindOfClass:[UIVisualEffectView class]]) {
[obj2.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj3, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj3 isKindOfClass:NSClassFromString(@"_UIBarBackgroundShadowContentImageView")]) {
obj3.hidden = YES;
}
}];
}
}];
}
}];
}
@end
彩蛋:
如何将自己自定义的TabBar与自己的tabbarController进行关联???
可自定义一个BaseTabBarController (继承于UITabBarController),在BaseTabBarController的- (void)viewDidLoad
方法中进行注册。
代码如下:
@implementation BaseTabBarController
- (void)viewDidLoad {
[super viewDidLoad];
CustomTabBar *customTabBar = [[CustomTabBar alloc] init];
@try {
[self setValue:customTabBar forKey:@"tabBar"];
} @catch (NSException *exception) {
}
}
@end