zoukankan      html  css  js  c++  java
  • iOS 自定义UITabBarController

    1.创建UITabBarController

    @implementation RootViewController{

        NSMutableArray *_allBtnArr; //按钮数据数组

    }

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        //隐藏系统tabBar
        self.tabBar.hidden = YES;
        [self initailData];
        [self createSubViews];
    }
    //初始化数据
    - (void)initailData{
        _allBtnArr = [NSMutableArray array];
        NSDictionary *btn1Dic = [NSDictionary dictionaryWithObjectsAndKeys:@"首页0" , @"title", @"1.png" , @"image", nil];
        NSDictionary *btn2Dic = [NSDictionary dictionaryWithObjectsAndKeys:@"首页1" , @"title", @"1.png" , @"image", nil];
        NSDictionary *btn3Dic = [NSDictionary dictionaryWithObjectsAndKeys:@"首页2" , @"title", @"1.png" , @"image", nil];
        NSDictionary *btn4Dic = [NSDictionary dictionaryWithObjectsAndKeys:@"首页3" , @"title", @"1.png" , @"image", nil];
        [_allBtnArr addObject:btn1Dic];
        [_allBtnArr addObject:btn2Dic];
        [_allBtnArr addObject:btn3Dic];
        [_allBtnArr addObject:btn4Dic];
    }
    //初始化视图(添加按钮)
    - (void)createSubViews{
    //TabBar背景 UIView
    *backgroundV = [[UIView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 49, self.view.frame.size.width, 49)]; backgroundV.backgroundColor = [UIColor purpleColor]; [self.view addSubview:backgroundV]; //循环创建自定义按钮 NSInteger i = 0; for (NSDictionary *dic in _allBtnArr) { RootUIButton *tabBarBtn = [[RootUIButton alloc] initWithTitle:[dic objectForKey:@"title"] WithImage:[UIImage imageNamed:[dic objectForKey:@"image"]] WithFrame:CGRectMake(backgroundV.frame.size.width / _allBtnArr.count * i, 0, backgroundV.frame.size.width / _allBtnArr.count, backgroundV.frame.size.height)]; tabBarBtn.backgroundColor = [UIColor clearColor]; tabBarBtn.tag = 1000 + i; [tabBarBtn addTarget:self action:@selector(changeViewController:) forControlEvents:UIControlEventTouchUpInside]; [backgroundV addSubview:tabBarBtn]; i++; } }
    //根据Tag值标记接下来的操作
    - (void)changeViewController:(UIButton *)button{ switch (button.tag) { case 1000: NSLog(@"0");
           self.selectedIndex = 0;
    break; case 1001: NSLog(@"1");
           self.selectedIndex = 1;
    break; case 1002: NSLog(@"2");
           self.selectedIndex = 2;
    break; case 1003: NSLog(@"3");
           self.selectedIndex = 3;
    break; default: break; } }

    2.创建UIButton

    //自定义按钮初始化 标题 图片 尺寸
    - (instancetype)initWithTitle:(NSString *)title WithImage:(UIImage *)image WithFrame:(CGRect)frame{
       self = [super initWithFrame:frame];
        if (self) {
            [self createSubViewsWithTitle:title WithImage:image];
        }
        return self;
    }
    - (void)createSubViewsWithTitle:(NSString *)title WithImage:(UIImage *)image{
        //创建按钮图片
        UIImageView *btnImageV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height - 20)];
        btnImageV.backgroundColor = [UIColor clearColor];
        btnImageV.image = image;
        btnImageV.contentMode = 1;
        [self addSubview:btnImageV];
        
        //创建按钮文字
        UILabel *titleLB = [[UILabel alloc] initWithFrame:CGRectMake(btnImageV.frame.origin.x, btnImageV.frame.origin.y + btnImageV.frame.size.height, btnImageV.frame.size.width, 20)];
        titleLB.backgroundColor = [UIColor cyanColor];
        titleLB.textAlignment = NSTextAlignmentCenter;
        titleLB.text = title;
        [self addSubview:titleLB];
        
    }

    3.在AppDelegate中使用自定义的UITabBarViewController

        ViewController *homeVC = [[ViewController alloc] init];
        TwoViewController *twoVC = [[TwoViewController alloc] init];
        ThreeViewController *threeVC = [[ThreeViewController alloc] init];
        FourViewController *foureVC = [[FourViewController alloc] init];
        RootViewController *rootTabBarVC = [[RootViewController alloc] init];
        rootTabBarVC.viewControllers = [NSArray arrayWithObjects:homeVC, twoVC, threeVC, foureVC, nil];
        self.window.rootViewController = rootTabBarVC;

    效果图:

  • 相关阅读:
    https://developer.aliyun.com/ebook?utm_content=g_1000256420
    形容词在句子中的位置
    顺风水水
    https://www.youtube.com/watch?v=pVIywLXDuRo 有趣到流泪
    经济机器是怎样运行的 (时长30分钟) Ray Dalio
    https://codepen.io/deadzq-the-decoder/pen/qBqQYXg
    Vue 10 test
    vue day2
    codepen学Vue day2
    代理总结更新
  • 原文地址:https://www.cnblogs.com/MrFeng/p/4980553.html
Copyright © 2011-2022 走看看