前言:上一个博客中有提到欢迎页面和主界面,说完欢迎页应该来谈谈主界面的搭建了,我目前做的这个项目,符合正常情况上的TabBar+navigation这种。所以接下来就来说一说怎么搭的这个主界面tabBar吧。

 

//
//  QKTabBarController.m
//  kaixinwaP
//
//  Created by wangyao on 15/11/24.
//  Copyright © 2015年 wangyao. All rights reserved.
//

#import "QKTabBarController.h"
#import "RecommendViewController.h"
#import "StudyViewController.h"
#import "QKMeViewController.h"
#import "QKNavigationController.h"
@interface QKTabBarController ()

@end

@implementation QKTabBarController

- (void)viewDidLoad {
    [super viewDidLoad];
    
//    创建三大主视图的控制器
    RecommendViewController * recommendVC =[RecommendViewController new];
    
    StudyViewController * studyVC = [StudyViewController new];
    
    QKMeViewController * meVC = [QKMeViewController new];
    
    
    
    [self addOneChildVC:recommendVC title:@"推荐" imageName:@"tabBar0" selectedImageName:@"tabBar0"];
    [self addOneChildVC:studyVC title:@"学习" imageName:@"tabBar2" selectedImageName:@"tabBar2"];
    [self addOneChildVC:meVC title:@"我" imageName:@"tabBar3" selectedImageName:@"tabBar3"];
    
    
    
    // Do any additional setup after loading the view.
}
//手写添加tabBar的方法
- (void)addOneChildVC:(UIViewController *)childVC title:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName
{
    childVC.tabBarItem.image = [UIImage imageNamed:imageName];
    
    
//    设置控制器的标题为title
    childVC.title = title;
//    设置tabBarItem的普通文字颜色

    
    
    NSMutableDictionary * textAttrs = [NSMutableDictionary dictionary];
    textAttrs[NSForegroundColorAttributeName] = QKColor(127, 127, 127);
    textAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:10];
    [childVC.tabBarItem setTitleTextAttributes:textAttrs forState:UIControlStateNormal];
    
    NSMutableDictionary * selectedTextAttrs = [NSMutableDictionary dictionary];
    selectedTextAttrs[NSForegroundColorAttributeName] = QKColor(45, 201, 45);
    [childVC.tabBarItem setTitleTextAttributes:selectedTextAttrs forState:UIControlStateSelected];
    
    UIImage * selectedImage = [UIImage imageNamed:selectedImageName];
    if (iOS7) {
        selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        }
    childVC.tabBarItem.selectedImage = selectedImage;
    
//    添加导航控制器
    QKNavigationController * nav = [[QKNavigationController alloc]initWithRootViewController:childVC];
    [self addChildViewController:nav];
    
    
    
    
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

总结:

 

- (void)addOneChildVC:(UIViewController *)childVC title:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName
{
    childVC.tabBarItem.image = [UIImage imageNamed:imageName];
    
    
//    设置控制器的标题为title
    childVC.title = title;
//    设置tabBarItem的普通文字颜色

    
    
   1. NSMutableDictionary * textAttrs = [NSMutableDictionary dictionary];
   2. textAttrs[NSForegroundColorAttributeName] = QKColor(127, 127, 127);
   3. textAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:10];
   4. [childVC.tabBarItem setTitleTextAttributes:textAttrs forState:UIControlStateNormal];
    
   5. NSMutableDictionary * selectedTextAttrs = [NSMutableDictionary dictionary];
    6.selectedTextAttrs[NSForegroundColorAttributeName] = QKColor(45, 201, 45);
   7. [childVC.tabBarItem setTitleTextAttributes:selectedTextAttrs forState:UIControlStateSelected];
    
    8.UIImage * selectedImage = [UIImage imageNamed:selectedImageName];
   9. if (iOS7) {
        selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        }
    childVC.tabBarItem.selectedImage = selectedImage;
    
//    添加导航控制器
    10.QKNavigationController * nav = [[QKNavigationController alloc]initWithRootViewController:childVC];
    [self addChildViewController:nav];
    }
主要就是这个方法,这个函数里面的大题步骤就是将把传进来的UIViewController设置好各种属性,包括title,图标啊,再给一个一个的加到navigationcontroller中,最后把navigationController设置成tabBar的childViewController

具体:1~4是由于设置tabBarItem 只能通过一个字典来存属性,所以1~3都是在创建一个,属性的字典,然后在给一个设置,就设置了tabBaritem的字体样式等属性。

8~9都是给tabBAriTem设置图片

10.再创建一个navigationcontroller并且以传进来的这个视图控制器为跟视图,最后再把这个带有跟视图的navigationController作为tabbarcontroller的childViewController。

大功告成!!!

 

 

 

一句话:当敲代码的速度加快了,脱离贫穷的速度也就快了。

 

posted on 2015-12-15 16:23  奋斗的王布斯  阅读(205)  评论(0编辑  收藏  举报