第一步.创建BaseTabBar 继承UITabBar
1.添加中间按钮
- (void)initView{
_centerBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[_centerBtn setBackgroundColor:[UIColor whiteColor]];
//去除选择时高亮
_centerBtn.adjustsImageWhenHighlighted = NO;
// 设定button大小为适应图片
UIImage*normalImage = [UIImageimageNamed:@"tabbar_reporter"];
[_centerBtn setImage:normalImage forState:UIControlStateNormal];
//根据图片调整button的位置(图片中心在tabbar的中间最上部,这个时候由于按钮是有一部分超出tabbar的,所以点击无效,要进行处理)
CGFloatwidth =55;
CGFloatheight =47;
CGFloatx = (kScreenWidth- width)/2.0;
CGFloaty = -height/3.0;
_centerBtn.frame=CGRectMake(x,y,width,height);
_centerBtn.layer.cornerRadius= height/2.0;
_centerBtn.layer.masksToBounds = YES;
[self addSubview:_centerBtn];
}
2.处理超出区域点击无效的问题
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event{
UIView*view = [superhitTest:pointwithEvent:event];
if(view ==nil){
/**此处if判断的原因是因为如果不判断隐藏,会影响二级页面,二级页面此位置的点击事件会被拦截**/
if(self.hidden==YES){
returnnil;
}
//转换坐标
CGPointtempPoint = [self.centerBtnconvertPoint:pointfromView:self];
//判断点击的点是否在按钮区域内
if(CGRectContainsPoint(self.centerBtn.bounds, tempPoint)){
//返回按钮
return_centerBtn;
}
}
returnview;
}
第二步:自定义UITabbarViewController,实现如下代码
self.baseTabBar = [[BaseTabBar alloc]init];
//KVC改变其值
[self setValue:self.baseTabBar forKey:@"tabBar"];
网友评论