ios UITabBarController添加中间按钮

使用系统自带的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{
    
    //中间按钮做的事情
    
}



效果如下
结果图

代码看起来笨笨的,但还是能解决问题的…

发布了7 篇原创文章 · 获赞 4 · 访问量 301

猜你喜欢

转载自blog.csdn.net/qq_41586150/article/details/103775238