美文网首页
iOS隐藏UITabBar顶部黑线

iOS隐藏UITabBar顶部黑线

作者: lucky_lee | 来源:发表于2024-06-05 11:17 被阅读0次

    经过图层的分析与打印输出,在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
    

    相关文章

      网友评论

          本文标题:iOS隐藏UITabBar顶部黑线

          本文链接:https://www.haomeiwen.com/subject/dseuqjtx.html