美文网首页
去掉系统的UITabBar上的黑线

去掉系统的UITabBar上的黑线

作者: jueyingxx | 来源:发表于2017-07-24 13:52 被阅读210次
    I don't want to be someone that you're settling for. I don't want to be someone that anyone settles for.
    我不想要你将就,我也不想成为将就的对象。——《西雅图不眠夜》(Sleepless in Seattle)
    图片.png

    (图片来源:视觉中国)

    作为一名屌丝程序员,有道词典是必备神器,每日一句更是不容做过。

    iOS 9 和 iOS 10 tabBar上的黑线是有区别的,黑线位置是不一样的,红框中的view就是黑线:

    1、iOS 9如图:

    WechatIMG1439.jpeg

    2、iOS 10以上

    WechatIMG1440.jpeg

    3、注意事项

    在iOS 9上获取黑线的时候要区分_UITabBarBackgroundView,它也是属于UIImageView的子类。

    4、代码:

    
    #define kIOS_VERSION   ([[[UIDevice currentDevice] systemVersion] floatValue])
    #define IOS8_OR_LATER  (kIOS_VERSION >= 8.0)
    #define IOS9_OR_LATER  (kIOS_VERSION >= 9.0)
    #define IOS10_OR_LATER (kIOS_VERSION >= 10.0)
    
     if (IOS10_OR_LATER) {
            [self.tabBar.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                if ([obj isKindOfClass:NSClassFromString(@"_UIBarBackground")]) {
                    [obj.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj1, NSUInteger idx1, BOOL * _Nonnull stop1) {
                        if ([obj1 isKindOfClass:[UIImageView class]]) {
                            obj1.hidden = YES;
                            *stop1 = YES;
                        }
                    }];
                    *stop = YES;
                }
            }];
        } else {
            [self.tabBar.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                if ([obj isKindOfClass:[UIImageView class]] && ![obj isKindOfClass:NSClassFromString(@"_UITabBarBackgroundView")]) {
                    obj.hidden = YES;
                    *stop = YES;
                }
            }];
        }
    

    Done.

    相关文章

      网友评论

          本文标题:去掉系统的UITabBar上的黑线

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