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
上一篇 下一篇

猜你喜欢

热点阅读