去掉系统的UITabBar上的黑线

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)
去掉系统的UITabBar上的黑线_第1张图片
图片.png

(图片来源:视觉中国)

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

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

1、iOS 9如图:

去掉系统的UITabBar上的黑线_第2张图片
WechatIMG1439.jpeg

2、iOS 10以上

去掉系统的UITabBar上的黑线_第3张图片
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上的黑线)