IOS 学习---视图,标签,导航控制器详解

当一个项目中UITabBarController,UIViewController三种控制器同时出现的时候,将标签控制器(UITabBarController)作为视图的根控制器,将创建的视图控制器作为标签控制器的子控制器。

    //创建标签控制器
    UITabBarController *tabarVC = [[UITabBarController alloc]init];
    
    NSMutableArray *viewContrArr = [NSMutableArray array];  //没有元素
    //创建五个视图控制器
    for (int i = 0; i < 5; i ++) {
        
        UIViewController *viewCotrol = [[UIViewController alloc]init];
        //设置颜色
        viewCotrol.view.backgroundColor = [UIColor colorWithRed:arc4random()%10*0.1 green:arc4random()%10*0.1 blue:arc4random()%10*0.1 alpha:1];
        
        [viewContrArr addObject:viewCotrol];
    }
    
    tabarVC.viewControllers = viewContrArr;
    
    self.window.rootViewController = tabarVC;

    /*******设置选项卡(标签项)******/
    //UITabBar:标签栏
    //UITabBarItem:选项卡
    
    //1.使用系统的itme样式
    UITabBarItem *itme1 = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:100];
    //获取对应的视图控制器
    UIViewController *VC1 = viewContrArr[0];
    VC1.tabBarItem = itme1;
    
    UITabBarItem *itme2 = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemHistory tag:101];
    UIViewController *VC2 = viewContrArr[1];
    VC2.tabBarItem = itme2;
    
    //2.创建图片itme
    UITabBarItem *itme3 = [[UITabBarItem alloc]initWithTitle:@"广场" image:[UIImage imageNamed:@"2.png"] tag:102];
    UIViewController *VC3 = viewContrArr[2];
    VC3.tabBarItem = itme3;
    
    UITabBarItem *itme4 = [[UITabBarItem alloc]initWithTitle:@"" image:[UIImage imageNamed:@"3.png"] selectedImage:[UIImage imageNamed:@"选中.png"]];
    UIViewController *VC4 = viewContrArr[3];
    VC4.tabBarItem = itme4;
    
    
    //3.设置背景图片 UITabBar
    [tabarVC.tabBar setBackgroundImage:[UIImage imageNamed:@"navbg.png"]];
    
    //4.设置选项被选中的颜色
    tabarVC.tabBar.tintColor = [UIColor redColor];
    
    //5.设置背景颜色
    //tabarVC.tabBar.backgroundColor = [UIColor blackColor]; //错误的设置方法
    //tabarVC.tabBar.barTintColor = [UIColor blackColor];
    
    //6.设置选中图片
    tabarVC.tabBar.selectionIndicatorImage = [UIImage imageNamed:@"选中"];
    
    //7.设置提示数字 字符串类型
    itme1.badgeValue = @"99+";
    
    
    return YES;
}

当UITabBarController,UINavigationController ,UIViewController三种控制器同时需要使用的时候,三级控制器中

UITabBarController为第一级控制器,UINavigationController作为第二级控制器,而UIViewController作为第三极控制器.

自定义UITabBarController

- (void)_createTabBarView
{
    //1.隐藏系统提供的工具栏
    self.tabBar.hidden = YES;
    
    //2.创建工具栏
    UIView *tabBarView = [[UIView alloc]initWithFrame:CGRectMake(0, 568 - 49, 320, 49)];
    //tabBarView.backgroundColor = [UIColor blackColor];
    [tabBarView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"navbg"]]];
    [self.view addSubview:tabBarView];
    
    
    //创建选中视图
    //创建选中视图
    _selectImg = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 53, 45)];
    _selectImg.image = [UIImage imageNamed:@"选中.png"];
    [tabBarView addSubview:_selectImg];
    

    //创建标签项(按钮)
    
    //创建存放图片名称的数组
    NSArray *imgNames = @[@"1.png",@"2.png",@"3.png",@"4.png",@"5.png"];
    for (int i = 0; i < self.viewControllers.count; i ++) {
        
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        
        [btn setImage:[UIImage imageNamed:imgNames[i]] forState:UIControlStateNormal];
        
        btn.frame = CGRectMake(i * (320/5), 0, 320/5, 49);
        
        [btn addTarget:self action:@selector(clickedAction:) forControlEvents:UIControlEventTouchUpInside];
        
        [tabBarView addSubview:btn];
        
        btn.tag = 100 + i;
        
        if (i == 0) {
            
             _selectImg.center = btn.center;
        }       
    }   
}


- (void)clickedAction:(UIButton *)btn
{
    //根据tag值获取子控制器的下标
    int index =(int)btn.tag - 100;
    //根据下标获取对象的子控制器
    self.selectedViewController =  self.viewControllers[index];   
    [UIView animateWithDuration:.2 animations:^{
        
        _selectImg.center = btn.center;
    }];  
}





你可能感兴趣的:(IOS 学习---视图,标签,导航控制器详解)