#import "LeeNavigationController.h"

@interface LeeNavigationController ()

@end

@implementation LeeNavigationController

+(void)initialize

{

// Attributes 属性

NSDictionary  *textAttributes=@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:25]};

// 设置导航栏的字体大小  颜色

UINavigationBar *navBar = [UINavigationBar appearance];

[navBar setTitleTextAttributes:textAttributes];

[navBar setBarTintColor:RGB_COLOR(80, 135, 251)];

NSDictionary  *textAttributes2=@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:20]};

UIBarButtonItem *item = [UIBarButtonItem appearance];

[item setTitleTextAttributes:textAttributes2 forState:UIControlStateNormal];

[item setTintColor:[UIColor whiteColor]];

}

#import <UIKit/UIKit.h>

@interface LeeTabBarController : UITabBarController

+ (instancetype)configTabBarController;

@end

#import "LeeTabBarController.h"

#import "oneViewController.h"

#import "twoViewController.h"

#import "threeViewController.h"

#import "LeeNavigationController.h"

#import "LeeButton.h"

@interface LeeTabBarController ()

@property (nonatomic, strong)NSMutableArray *buttonDatas;

@property (nonatomic, strong)NSMutableArray *buttonArray;

@property (nonatomic, weak)UIImageView *backImageView;

@end

@implementation LeeTabBarController

+ (instancetype)configTabBarController

{

return [[self alloc]init];

}

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

//隐藏掉自带的tabBar

self.tabBar.hidden = YES;

//初始化按钮的文字 图片

[self initButtonData];

//添加tabBar

[self initTabBar];

//添加子控制器

[self addChildControllers];

}

- (void)initButtonData

{

_buttonDatas = [NSMutableArray array];

NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"电影",@"title",@"record_unselected",@"norImage",@"record_selected",@"selImage" ,nil];

NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"影院",@"title",@"record_unselected",@"norImage",@"record_selected",@"selImage" ,nil];

NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"新闻",@"title",@"record_unselected",@"norImage",@"record_selected",@"selImage" ,nil];

//    NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:@"社区",@"title",@"",@"norImage",@"",@"secImage" ,nil];

//    NSDictionary *dic5 = [NSDictionary dictionaryWithObjectsAndKeys:@"更多",@"title",@"",@"norImage",@"",@"secImage" ,nil];

[_buttonDatas addObject:dic1];

[_buttonDatas addObject:dic2];

[_buttonDatas addObject:dic3];

//    [_buttonDatas addObject:dic4];

//    [_buttonDatas addObject:dic5];

}

- (void)initTabBar

{

UIView *tabBar = [[UIView alloc]initWithFrame:CGRectMake(0, HEIGHT_DEVICE - 49, WIDTH_DEVICE, 49)];

tabBar.backgroundColor = RGBA_COLOR(0, 0, 0, 0.4);

[self.view addSubview:tabBar];

UIImageView *backView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@""]];

[tabBar addSubview:backView];

self.backImageView = backView;

//为button添加数据

_buttonArray = [NSMutableArray array];

int i = 0;

for (NSDictionary *dict in self.buttonDatas) {

LeeButton *btn = [[LeeButton alloc]initWithTitle:[dict objectForKey:@"title"] AndImage:[UIImage imageNamed:[dict objectForKey:@"norImage"]] AndSelectImage:[UIImage imageNamed:[dict objectForKey:@"selImage"]] AndFrame:CGRectMake(i * WIDTH_DEVICE/3, 0, WIDTH_DEVICE/3, 49)];

btn.tag = 100 + i;

[btn addTarget:self action:@selector(buttonTouch:) forControlEvents:UIControlEventTouchUpInside];

[tabBar addSubview:btn];

[_buttonArray addObject:btn];

if (i == 0) {

//backView.center = btn.center;

//self.selectedIndex = 0;

btn.selected = YES;

}

i ++;

}

}

- (void)buttonTouch:(LeeButton *)button

{

//self.backImageView.center = button.center;

button.selected = YES;

for (LeeButton *Btn in self.buttonArray) {

if (Btn.tag == button.tag && Btn.tag != 0) {

Btn.selected = YES;

}else{

Btn.selected = NO;

}

}

self.selectedIndex = button.tag - 100;

}

- (void)addChildControllers

{

oneViewController *oneVC = [[oneViewController alloc]init];

oneVC.view.backgroundColor = [UIColor redColor];

//给每一个控制器包装一个导航栏

LeeNavigationController *NV1 = [[LeeNavigationController alloc]initWithRootViewController:oneVC];

oneVC.title = @"电影";

twoViewController *twoVC = [[twoViewController alloc]init];

twoVC.view.backgroundColor = [UIColor greenColor];

//给每一个控制器包装一个导航栏

LeeNavigationController *NV2 = [[LeeNavigationController alloc]initWithRootViewController:twoVC];

twoVC.title = @"影院";

threeViewController *threeVC = [[threeViewController alloc]init];

threeVC.view.backgroundColor = [UIColor blueColor];

//给每一个控制器包装一个导航栏

LeeNavigationController *NV3 = [[LeeNavigationController alloc]initWithRootViewController:threeVC];

threeVC.title = @"新闻";

self.viewControllers = @[NV1,NV2,NV3];

}

@end

@interface LeeButton : UIButton

- (instancetype)initWithTitle:(NSString *)title AndImage:(UIImage *)image AndSelectImage:(UIImage *)selectImage AndFrame:(CGRect)frame;

@end

#import "LeeButton.h"

@interface LeeButton()

@property (nonatomic, weak)UIImageView *leeView;

@property (nonatomic, weak)UILabel     *leeLabel;

@property (nonatomic, strong)UIImage   *norImg;

@property (nonatomic, strong)UIImage   *selImg;

@end

@implementation LeeButton

- (instancetype)initWithTitle:(NSString *)title AndImage:(UIImage *)image AndSelectImage:(UIImage *)selectImage AndFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

CGFloat width = self.frame.size.width;

CGFloat height = self.frame.size.height;

CGFloat imageWH = 30;

//添加imageView

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake((width - imageWH)*0.5, 5, imageWH, imageWH)];

imageView.backgroundColor = [UIColor clearColor];

imageView.contentMode = UIViewContentModeScaleAspectFit;

imageView.image = image;

[self addSubview:imageView];

self.leeView = imageView;

//添加Label

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(imageView.frame), width, height - CGRectGetMaxY(imageView.frame))];

label.backgroundColor = [UIColor clearColor];

label.textAlignment = NSTextAlignmentCenter;

label.font = [UIFont systemFontOfSize:10];

label.textColor = [UIColor whiteColor];

label.text = title;

[self addSubview:label];

self.leeLabel = label;

self.norImg = image;

self.selImg = selectImage;

}

return self;

}

- (void)setSelected:(BOOL)selected

{

[super setSelected:selected];

NSLog(@"111");

if (selected) {

self.leeView.image = self.selImg;

}else{

self.leeView.image = self.norImg;

}

}

@end

自定义导航栏 tabBarController 笔记的更多相关文章

  1. iOS 自定义导航栏笔记

    一.UINavigationBar的结构 导航栏几乎是每个页面都会碰到的问题,一般两种处理方式:1.隐藏掉不显示 2.自定义 1. 添加导航栏 TestViewController * mainVC ...

  2. 分别用ToolBar和自定义导航栏实现沉浸式状态栏

    一.ToolBar 1.在build.gradle中添加依赖,例如: compile 'com.android.support:appcompat-v7:23.4.0' 2.去掉应用的ActionBa ...

  3. swift 自定义导航栏颜色

    func setNavigationApperance(){ //自定义导航栏颜色 [self.navigationController?.navigationBar.barTintColor = U ...

  4. ios7以上自定义导航栏标题的字体大小及颜色的方法

    自定义导航栏的字体和颜色,只需要自定义一个lable,然后将lable添加到导航栏的titleview中就可以了 代码如下 UILabel *label = [[UILabel alloc] init ...

  5. 微信小程序自定义导航栏

    微信小程序需要自定义导航栏,特别是左上角的自定义设置,可以设置返回按钮,菜单按钮,配置如下: 1.在app.json的window属性中增加: navigationStyle:custom 顶部导航栏 ...

  6. iOS:自定义导航栏,随着tableView滚动显示和隐藏

    自定义导航栏,随着tableView滚动显示和隐藏 一.介绍 自定义导航栏是APP中很常用的一个功能,通过自定义可以灵活的实现动画隐藏和显示效果.虽然处理系统的导航栏也可以实现,但是这个是有弊端的,因 ...

  7. 微信小程序 - 自定义导航栏(提示)

    点击下载: 自定义导航栏示例

  8. 微信小程序——自定义导航栏

    微信头部导航栏可能通过json配置: 但是有时候我们项目需求可能需要自定义头部导航栏,如下图所示: 现在具体说一下实现步骤及方法: 步骤: 1.在 app.json 里面把 "navigat ...

  9. 微信小程序-如何自定义导航栏(navigationStyle)?

    小程序是越来越开放了,微信版本 6.6.0可以自定义导航? 先了解下app.json中window配置navigationStyle属性,即导航栏样式,仅支持 default/custom.custo ...

随机推荐

  1. step_by_step_CSRF/ XSRF_问题描述

    接触Asp.net boilerplate 一段时间,一次同事将他的代码添加到zero项目模板中,他将路由配置成他的页面,目的是要让zero项目登录成功之后跳转到他的页面,可是通过fiddler监视请 ...

  2. Ambari2.6.2 HDP2.6.5 大数据集群搭建

    Ambari 2.6.2 中 HDFS-2.7.3 YARN-2.7.3 HIVE-1.2.1 HBASE-1.1.2 ZOOKEEPER-3.4.6 SPARK-2.3.0 注:本文基于root用户 ...

  3. JavaSE基础知识(5)—面向对象(对象数组和对象关联)

    一.对象数组 1.说明 数组的定义类型为对象类型 2.动态初始化 1.声明并开辟空间 Person[] pers = new Person[长度];2.赋值 for(int i=0;i<pers ...

  4. PEP8 规范

    Python PEP8 编码规范中文版   原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 Title Style ...

  5. Centos7 安装可视化图形

    因为安装的Centos7最小安装包,虚拟机没有可视化界面,可以采用下列命令,安装可视化界面. init id::initdefault: yum install -y libdevmapper* yu ...

  6. CentOS7 查看显卡信息

    A卡: [root@t1 ~]# lspci | grep -i vga 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 N卡: [ro ...

  7. 增加cookie和表单提交的安全

    设置COOKIE setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path ...

  8. java数据结构至对称矩阵压缩存储

    刚刚刷java选择题,遇到的对称矩阵压缩存储问题,我们知道对称矩阵是aij=aji的矩阵,压缩存储可以采用一维数组和二维数组存储. 此处只讨论一维数组存储的形式,设数组下标从0开始,对称矩阵为n维矩阵 ...

  9. Object.defineProperty(obj,prop,descriptor)使用

    初步实现了数据自动映射到html中,动态修改对象数据也很自动更新到html.提供addProps方法-添加新增属性并初始化自动监听代码如下: 1.abserve.js:包含数据监听实现.类似jquer ...

  10. 转载:python异常之 GeneratorExit

    转载地址 https://blog.csdn.net/hedan2013/article/details/72810653 当一个生成器对象被销毁时,会抛出一个GeneratorExit异常.请看下面 ...