最简单实现TabBar中间的凸起按钮

最近有个项目需求需要Tabbar中间的按钮显示大按钮,网上看了很多都是自定义TaBar,然后添加一个Btn实现的,个人觉得麻烦且繁琐。

本人想到了一个非常简便的实现方法:

1.中间Item的图片有多大就叫UI切多大,然后把这图片放进去

2.通过[tabBarItem setImageInsets]调整图片到合适的位置

3.重写UITabBar,然后通过KVC [self setValue:tabar forKey:@"tabBar"];

4.- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event 方法


自定义TabBar代码:

@property (nonatomic , strong) UIView *maxItemImg;

@property (nonatomic , strong) UIView *maxitem;

- (void)layoutSubviews

{

    [super layoutSubviews];

    //查找当前tabbar中凸起按钮

    Class class = NSClassFromString(@"UITabBarButton");

    for(UIView*btninself.subviews) {

        if([btnisKindOfClass:class]) {

            for(UIView*imginbtn.subviews) {

                if ([img isKindOfClass:NSClassFromString(@"UITabBarSwappableImageView")] && img.frame.size.height > _maxItemImg.frame.size.height) {

                    _maxItemImg= img;

                    _maxitem= btn;

                }

            }

        }


    }

}

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event

{

    CGPoint newA = [self convertPoint:point toView:self.maxItemImg];

    if(self.isHidden==NO&& [self.maxItemImgpointInside:newAwithEvent:event]) {

        return_maxitem;

    }

    return[superhitTest:pointwithEvent:event];

}

你可能感兴趣的:(最简单实现TabBar中间的凸起按钮)