你是否看到过这样的tabbar:
中间是一个凸起的tabbar,一开始博主这么想的:
1.在tabbar上增加一个按钮,但是我们知道,如果按钮大小超出superView的范围将会失去响应,这里要注意,只是超出去的部分失去响应,未超出部分依然响应。也许不少人都这么想过,但是在实际操作中会被pass掉。
2.封装tabbar的时候让tabbar高度高一些,虽然解决了问题,但实际上在突出部分到正常按钮顶部的空白区域为不可点击区域,下面的视图虽然可见,但却不可点,虽然只有几十像素区域,但体验上并不是很好,像这样的:
这块红色区域为不可点击区域。
3.这是一个可行方案,既然是封装的tabbar,需要手动add到tabbar的VC,大多数封装的都是这样,何不算好距离,把凸起的按钮直接加在tabbar的VC中:
[_myTabbar creatLHHTabbarWithBackGroundImage:nil orUseBackGroundView:YES ifUseBGViewWithColor:[UIColor orangeColor] withViewControllerArray:_vcArray withNormalImageArray:_normalImageArray withSelectImageArray:_selectImagerray withTabbarItemTitleArray:_tabbarTitleArray withTarget:self withSelector:@selector(itemAction:)]; [_tabbar.view addSubview:_myTabbar]; [self.view addSubview:_tabbar.view]; //凸起按钮 UIButton *tuBtn = [UIButton buttonWithType:UIButtonTypeContactAdd]; tuBtn.frame = CGRectMake(0, 0, 80, 80); tuBtn.layer.cornerRadius = 40; tuBtn.backgroundColor = [UIColor orangeColor]; tuBtn.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height - 40); [tuBtn addTarget:self action:@selector(tuAction) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:tuBtn];
在创建tabbar的时候直接add到self.view上,覆盖中间的空缺位置。但是其他几个按钮的位置需要提前算好,详细的见代码:点击下载