使用系统自带的UITabBarController时想添加一个中间按钮的解决方案:
添加一个按钮类:
#import <UIKit/UIKit.h>
@interface XMIndexTabBarBtn : UIButton
@property (strong,nonatomic) XMIndexTabBarBtn *btn1;
@property (strong,nonatomic) XMIndexTabBarBtn *btn2;
@property (strong,nonatomic) XMIndexTabBarBtn *btn3;
@end
在自己自定义的UITabBarController类里面加入以下几个属性
#import <UIKit/UIKit.h>
#import "XMIndexTabBarBtn.h"
@interface XMIndexTabBarViewController : UITabBarController
@property (strong,nonatomic) UIView *backView;
@property (strong,nonatomic) XMIndexTabBarBtn *btn1;
@property (strong,nonatomic) XMIndexTabBarBtn *btn2;
@property (strong,nonatomic) XMIndexTabBarBtn *btn3;
@property (strong,nonatomic) XMIndexTabBarBtn *btn4;
@end
在自己自定义的UITabBarController类里面加入以下代码,添加中间按钮主要代码
- (void)addBtn{
//自定义添加标签导航按钮
self.backView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 49)];
[self.backView setBackgroundColor:[UIColor whiteColor]];
[self.tabBar addSubview:self.backView];
for (int i=0; i<5; i++) {
if (i == 0) {
self.btn1 = [[XMIndexTabBarBtn alloc] initWithFrame: CGRectMake((i*(self.view.frame.size.width/5.0)), 0, (self.view.frame.size.width/5.0), 49)];
[self.btn1 setTitle:@"职场" forState:UIControlStateNormal];
[self.btn1 setTitleColor:[UIColor colorWithRed:244.0/255.0 green:115.0/255.0 blue:26.0/255.0 alpha:1.0] forState:UIControlStateNormal];
[self.btn1.titleLabel setFont:[UIFont systemFontOfSize:13.f]];
} else if (i == 1){
self.btn2 = [[XMIndexTabBarBtn alloc] initWithFrame: CGRectMake((i*(self.view.frame.size.width/5.0)), 0, (self.view.frame.size.width/5.0), 49)];
[self.btn2 setTitle:@"课程" forState:UIControlStateNormal];
[self.btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.btn2.titleLabel setFont:[UIFont systemFontOfSize:13.f]];
} else if (i == 2) {
} else if (i == 3) {
self.btn3 = [[XMIndexTabBarBtn alloc] initWithFrame: CGRectMake((i*(self.view.frame.size.width/5.0)), 0, (self.view.frame.size.width/5.0), 49)];
[self.btn3 setTitle:@"消息" forState:UIControlStateNormal];
[self.btn3 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.btn3.titleLabel setFont:[UIFont systemFontOfSize:13.f]];
} else if (i == 4) {
self.btn4 = [[XMIndexTabBarBtn alloc] initWithFrame: CGRectMake((i*(self.view.frame.size.width/5.0)), 0, (self.view.frame.size.width/5.0), 49)];
[self.btn4 setTitle:@"我的" forState:UIControlStateNormal];
[self.btn4 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.btn4.titleLabel setFont:[UIFont systemFontOfSize:13.f]];
}
}
self.btn1.btn1 = self.btn2;
self.btn1.btn2 = self.btn3;
self.btn1.btn3 = self.btn4;
self.btn2.btn1 = self.btn1;
self.btn2.btn2 = self.btn3;
self.btn2.btn3 = self.btn4;
self.btn3.btn1 = self.btn1;
self.btn3.btn2 = self.btn2;
self.btn3.btn3 = self.btn4;
self.btn4.btn1 = self.btn1;
self.btn4.btn2 = self.btn2;
self.btn4.btn3 = self.btn3;
[self.btn1 addTarget:self action:@selector(setWorkSpacePage:) forControlEvents:UIControlEventTouchUpInside];
[self.backView addSubview:self.btn1];
[self.btn2 addTarget:self action:@selector(setCurriculumPage:) forControlEvents:UIControlEventTouchUpInside];
[self.backView addSubview:self.btn2];
[self.btn3 addTarget:self action:@selector(setMessagePage:) forControlEvents:UIControlEventTouchUpInside];
[self.backView addSubview:self.btn3];
[self.btn4 addTarget:self action:@selector(setMePage:) forControlEvents:UIControlEventTouchUpInside];
[self.backView addSubview:self.btn4];
//添加中间按钮
UIButton *btn = [[UIButton alloc] initWithFrame: CGRectMake((self.view.frame.size.width/2.0)-14.5, 15, 29, 22)];
[btn setImage:[UIImage imageNamed:@"tabe_btn.png"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"tabe_btn.png"] forState:UIControlStateNormal];
[btn sizeToFit];
[btn addTarget:self action:@selector(onClick) forControlEvents:UIControlEventTouchUpInside];
[self.backView addSubview:btn];
}
在自己自定义的UITabBarController类里面加入以下代码,控制标签导航,以及点击那个标签,标签颜色加深
-(void) setWorkSpacePage:(XMIndexTabBarBtn *)btn{
self.selectedIndex =0;
[btn setTitleColor:[UIColor colorWithRed:244.0/255.0 green:115.0/255.0 blue:26.0/255.0 alpha:1.0] forState:UIControlStateNormal];
[btn.btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn.btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn.btn3 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
-(void) setCurriculumPage:(XMIndexTabBarBtn *)btn{
self.selectedIndex =1;
[btn setTitleColor:[UIColor colorWithRed:244.0/255.0 green:115.0/255.0 blue:26.0/255.0 alpha:1.0] forState:UIControlStateNormal];
[btn.btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn.btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn.btn3 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
-(void) setMessagePage:(XMIndexTabBarBtn *)btn{
self.selectedIndex =2;
[btn setTitleColor:[UIColor colorWithRed:244.0/255.0 green:115.0/255.0 blue:26.0/255.0 alpha:1.0] forState:UIControlStateNormal];
[btn.btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn.btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn.btn3 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
-(void) setMePage:(XMIndexTabBarBtn *)btn{
self.selectedIndex =3;
[btn setTitleColor:[UIColor colorWithRed:244.0/255.0 green:115.0/255.0 blue:26.0/255.0 alpha:1.0] forState:UIControlStateNormal];
[btn.btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn.btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn.btn3 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
中间按钮做的事情写在这个方法里
- (void) onClick{
//中间按钮做的事情
}
效果如下
代码看起来笨笨的,但还是能解决问题的…