iOS隐藏UITabBar顶部黑线

经过图层的分析与打印输出,在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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容