最简单实现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];
}