IOS开发之三级控制器的使用与自定义标签工具栏
来源:互联网 发布:人脸特征比对算法 编辑:程序博客网 时间:2024/05/17 23:52
三级控制器的概念:UITabBarController- ->(管理) UINavigationController -->(管理) UIViewController
下面笔者就分享一下三级控制器的使用
#import "MainTabbarController.h"
#import "ProfileViewController.h"
#import "GroupViewController.h"
#import "SearchViewController.h"
#import "CommentViewController.h"
#import "MessageViewController.h"
@interface UITabBarController ()
@end
@implementation UITabBarController
- (void)viewDidLoad {
//创建三级控制器
[self _creatView];
//自定义标签工具栏
[self _newInitTabbar];
}
//创建三级控制器- (void)_creatView{
//1.创建视图控制器并把视图控制器添加到数组中
ProfileViewController *profileCtrl = [[[ProfileViewController alloc] init] autorelease];
GroupViewController *groupCtrl = [[[GroupViewController alloc] init] autorelease];
SearchViewController *searchCtrl = [[[SearchViewController alloc] init] autorelease];
CommentViewController *commentCtrl = [[[CommentViewController alloc] init] autorelease];
MessageViewController *messageCtrl = [[[MessageViewController alloc] init] autorelease];
//将视图控制器存放到数组中
NSArray *viewCtrls = @[profileCtrl,groupCtrl,searchCtrl,commentCtrl,messageCtrl];
//2.创建导航控制器并把视图控制器交给导航控制器管理,并且把导航控制器也添加到连一个数组中
NSMutableArray *navCtrls = [[NSMutableArray alloc] init];
for(int i=0; i<5 ; i++) {
//取得视图控制器
UIViewController *viewCtrl = viewCtrls[i];
//创建导航控制器
UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:viewCtrl];
[navCtrl.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar_bg_normal"] forBarMetrics:UIBarMetricsDefault];
[navCtrls addObject:navCtrl];
}
//3.创建标签控制器,并把导航控制器交给标签控制器管理
self.viewControllers = navCtrls;
}
//自定义标签工具栏
- (void)_newInitTabbar {
//(1)移除工具栏上的按钮
//取得tabbar上的所有子视图
NSArray *views = [self.tabBar subviews];
for (UIView *view in views) {
[view removeFromSuperview];
}
//(2)设置背景
self.tabBar.backgroundImage = [UIImage imageNamed:@"navbg"];
//(3)创建按钮
CGFloat width = [UIScreen mainScreen].bounds.size.width;
//每一个按钮的宽度
CGFloat w = width/5;
for (int i=0; i<5; i++) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
NSString *imageName = [NSString stringWithFormat:@"%d",i+1];
[button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
//设置frame
button.frame = CGRectMake((w-42)/2+w*i, 2, 42, 45);
//添加一个点击事件
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
[self.tabBar addSubview:button];
}
//(4)创建选中图片
_selectedImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"选中"]];
_selectedImg.frame = CGRectMake((w-53)/2.0, 2, 53, 45);
[self.tabBar addSubview:_selectedImg];
}
//按钮的点击事件
- (void)buttonAction:(UIButton *)button {
//切换视图控制器
self.selectedIndex = button.tag;
//动画
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.2];
_selectedImg.center = button.center;
[UIView commitAnimations];
}
- IOS开发之三级控制器的使用与自定义标签工具栏
- ios 三级控制器 标签栏
- ios自定义标签控制器
- iOS开发中 UITabBarController--标签控制器的使用
- iOS开发之自定义多控制器的切换
- iOS--UI之导航控制器与标签控制器
- iPhone开发之工具栏控制器UITabBarController的预习
- 自定义标签的开发与使用
- IOS学习实例之五---三级控制器
- iOS开发学习之#标签栏控制器#(6)设置标签栏控制器
- iOS开发之使用addChildViewController:给控制器添加子控制器
- iOS开发--iOS使用自定义URL实现控制器之间的跳转(DCURLRouter组件)
- iOS开发之控制器的创建
- iOS开发之控制器View的创建
- ios开发总结之控制器的生命周期
- 自定义标签工具栏 Tabbar
- 自定义标签工具栏
- iOS开发之微信聊天工具栏的封装
- Win8Metro(C#)数字图像处理--2.33图像非线性变换
- java分页实现代码
- 感悟(3)——此刻反思2
- 事件总线框架---Otto
- (others)OSPF协议中的很重要的一句话
- IOS开发之三级控制器的使用与自定义标签工具栏
- Python对目录、文件的操作
- 第六周上机实践项目1——深复制体验(3)
- Win8Metro(C#)数字图像处理--2.34直方图规定化
- VC获取精确时间的做法
- BestCoder Round #37(b 根据不等式解范围)
- 程设课上题 Fraction [ For HW ]
- Android学习笔记之GridView
- 设计模式学习-及实例源码和电子书下载