自定义导航栏 tabBarController 笔记
#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 笔记的更多相关文章
- iOS 自定义导航栏笔记
一.UINavigationBar的结构 导航栏几乎是每个页面都会碰到的问题,一般两种处理方式:1.隐藏掉不显示 2.自定义 1. 添加导航栏 TestViewController * mainVC ...
- 分别用ToolBar和自定义导航栏实现沉浸式状态栏
一.ToolBar 1.在build.gradle中添加依赖,例如: compile 'com.android.support:appcompat-v7:23.4.0' 2.去掉应用的ActionBa ...
- swift 自定义导航栏颜色
func setNavigationApperance(){ //自定义导航栏颜色 [self.navigationController?.navigationBar.barTintColor = U ...
- ios7以上自定义导航栏标题的字体大小及颜色的方法
自定义导航栏的字体和颜色,只需要自定义一个lable,然后将lable添加到导航栏的titleview中就可以了 代码如下 UILabel *label = [[UILabel alloc] init ...
- 微信小程序自定义导航栏
微信小程序需要自定义导航栏,特别是左上角的自定义设置,可以设置返回按钮,菜单按钮,配置如下: 1.在app.json的window属性中增加: navigationStyle:custom 顶部导航栏 ...
- iOS:自定义导航栏,随着tableView滚动显示和隐藏
自定义导航栏,随着tableView滚动显示和隐藏 一.介绍 自定义导航栏是APP中很常用的一个功能,通过自定义可以灵活的实现动画隐藏和显示效果.虽然处理系统的导航栏也可以实现,但是这个是有弊端的,因 ...
- 微信小程序 - 自定义导航栏(提示)
点击下载: 自定义导航栏示例
- 微信小程序——自定义导航栏
微信头部导航栏可能通过json配置: 但是有时候我们项目需求可能需要自定义头部导航栏,如下图所示: 现在具体说一下实现步骤及方法: 步骤: 1.在 app.json 里面把 "navigat ...
- 微信小程序-如何自定义导航栏(navigationStyle)?
小程序是越来越开放了,微信版本 6.6.0可以自定义导航? 先了解下app.json中window配置navigationStyle属性,即导航栏样式,仅支持 default/custom.custo ...
随机推荐
- mysql学习笔记--遇到的坑
一.navcat 连接不支持密码输入 1. 先通过命令行进去mysql的root账户 mysql -uroot -p'password' 2. 更改加密方式 alter user 'root'@'lo ...
- SpringMVC的执行流程
解析SpringMVC执行流程 SpringMVC的执行图大概如下所示 1.首先它是由客户端发起请求,到DispatcherServlet,被拦截后到HandlerMapping这里充当一个路由器,通 ...
- 针对特定网站scrapy爬虫的性能优化
在使用scrapy爬虫做性能优化时,一定要根据不同网站的特点来进行优化,不要使用一种固定的模式去爬取一个网站,这个是真理,以下是对58同城的爬取优化策略: 一.先来分析一下影响scrapy性能的set ...
- linux下ping命令出现ping: sendto: Network is unreachable
问题:ping外网出现: sendto: Network is unreachable 查看: #route Route命令 : 在数据包没有有效传递的情况下,可以利用route命令查看路由表 [ro ...
- anaconda安装qt错误
windows下miniconda2安装python3下的qt包报错 conda install qt ERROR conda.core.link:_execute_actions(330): An ...
- 用Java代码通过JDBC连接Hiveserver2
1.在终端启动hiveserver2#hiveserver2 2.使用beeline连接hive另外打开一个终端,输入如下命令(xavierdb必须是已经存在的数据库)#beeline -u jdbc ...
- KNN Python实现
KNN Python实现 ''' k近邻(kNN)算法的工作机制比较简单,根据某种距离测度找出距离给定待测样本距离最小的k个训练样本,根据k个训练样本进行预测. 分类问题:k个点中出现频率最高的类别作 ...
- ABP 设置默认为中文
把资源文件 的zh-cn去掉就可以,改成默认文件
- Idea增加Idiff merger工具
File -- setting --- tolls -- diff & merge 选择使用外部diff工具和外部merge工具,选择winmerge工具目录. 就可以再version con ...
- java 多线程的唤醒
package TestThread.ThreadSynchronized.TestInterruptedException; public class InterruptDemo { public ...