自定义的tabBar控件WZTabBar继承UIView.在创建控件的时候,首先把加号按钮控件添加到WZTabBar。调用subView,添加到WZTabBar上面之后,必须重写layoutSubviews方法,否则在控件上不会显示。而在layoutSubviews方法中就是创建控件的Frame.
代码如下:
- (void)layoutSubviews
{
[super layoutSubviews];
[self setupTabBarBtnFrame];
}
//设置加号按钮的Frame
- (void)setupPlusBtnFrame
{
//设置加号按钮的位置
CGFloat btnX = self.frame.size.width * 0.5;
CGFloat btnY = self.frame.size.height * 0.5;
self.plusBtn.center = CGPointMake(btnX, btnY);
//设置加号按钮的宽高
CGSize btnSize = self.plusBtn.currentBackgroundImage.size;
CGFloat btnW = btnSize.width;
CGFloat btnH = btnSize.height;
self.plusBtn.bounds = CGRectMake(0, 0, btnW, btnH);
}
之后,就是让控制器作为自定义TabBar的代理,当按钮点击的时候,可以实现控制器跳转到按钮对应的控制器。
self.selectedIndex = tag;
而在按钮点击的时候,会通知代理方法
- (void)clickBtn:(WZTabBarButton *)btn
{
//通知代理
if ([self.delegate respondsToSelector:@selector(tabBar:tag:)]) {
[self.delegate tabBar:self tag:btn.tag];
}
//取消上一次选中的按钮
self.currentSelectedBtn.selected = NO;
//选中当前按钮
btn.selected = YES;
//记录当前选中的按钮
self.currentSelectedBtn = btn;
}