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三種控制器同時須要使用的時候,三級控制器中dom

UITabBarController爲第一級控制器,UINavigationController做爲第二級控制器,而UIViewController做爲第三極控制器.ide

自定義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;
    }];  
}
相關文章
相關標籤/搜索