iOS UINavigationController + UITabBarController
来源:互联网 发布:编程语言是什么样 编辑:程序博客网 时间:2024/06/10 22:21
由于项目要使用到选项卡,所以使用了UINavigationController 嵌套 UITabBarController搭建一个简单的模型,欢迎各位一起讨论其中的不足,一起学习,一起进步。
首先,写了一个ViewController继承 UITabBarController 易修改和复用,名字为 BaseTabBarController 主要有两个方法,用于设置UITabBarController里包含的每个viewcontroller和背景。
/**
* 设置选项卡ViewController
*
* @param viewController viewController
* @param selectedImage 选中的图片
* @param customImage 默认图片
* @param title 标题
* @param highLigthedColor 标题选中颜色
* @param customColor 标题默认颜色
* @param tag tag
* @return UINavigationController
*/
-(UINavigationController *)setTabViewController:(UIViewController *)viewController
selectedImage:(UIImage *) selectedImage
customImage:(UIImage *)customImage
title :(NSString *)title
highLigthedColor :(UIColor *)highLigthedColor
customColor :(UIColor *)customColor
tag:(NSInteger)tag
{
UINavigationController * navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
navigationController.navigationBar.hidden = YES;
UITabBarItem * icon = [[UITabBarItem alloc] init];
icon.tag = tag;
[icon setFinishedSelectedImage:selectedImage withFinishedUnselectedImage:customImage];
if(title != nil){
[icon setTitle:title];
[icon setTitleTextAttributes:@{UITextAttributeTextColor :customColor} forState:UIControlStateNormal];
[icon setTitleTextAttributes:@{UITextAttributeTextColor :highLigthedColor} forState:UIControlStateHighlighted];
}
navigationController.tabBarItem = icon;
return navigationController;
}
/**
* 设置选项卡的背景颜色
*
* @param colorImageView 颜色图片
*/
-(void)setBackGroundColor:(UIImageView *)colorImageView
{
[[UITabBar appearance] setBackgroundImage:IMG(@"color_2")];
}
然后在你需要用到选项卡的ViewController 中 继承BaseTabBarController
然后添加对应的VIewcontroler
HoemPageViewController * homePageViewController = [[HoemPageViewController alloc] init];
UINavigationController * nav_homePageViewController = [self setTabViewController:homePageViewController
selectedImage:IMG(@"tabbar_home_selected_os7")
customImage:IMG(@"tabbar_home_os7")
title:@"首页"
highLigthedColor:UIColorFromRGB(0x067AB5)
customColor:UIColorFromRGB(0x73c34a)
tag:1];
DiscoverViewController * disCoverViewController = [[DiscoverViewController alloc] init];
UINavigationController * nav_disCoverViewController = [self setTabViewController:disCoverViewController
selectedImage:IMG(@"tabbar_discover_selected_os7")
customImage:IMG(@"tabbar_discover_os7")
title:nil
highLigthedColor:nil
customColor:nil
tag:2];
就暂写两个为例,需要多的再添加,一般都是4或5个。
接下创建一个数组,存上面创建viewcontroller
NSArray * views = @[nav_homePageViewController,nav_disCoverViewController];
self.viewControllers = views;
self.delegate = self;
然后实现代理:
#pragma UITabBarControllerDelegate delegate
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//选中的时候
switch (viewController.tabBarItem.tag) {
//根据tag来判断选中的是哪个选项
default:
break;
}
//如果您觉得系统自带的小红圈数字不喜欢的话,下面提供一种方式,可以用图片代替系统的小红圈。
// 自定义红色小数字
for(UIView *view in tabBarController.tabBar.subviews) {
if([view isKindOfClass:[UIImageView class]]) {
[view removeFromSuperview];
}
}
UIImageView * image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"color_2"]];
image.frame = CGRectMake(30, 0, 20, 20);
[tabBarController.tabBar addSubview:image];
}
下面是关于 UINavigationController 和 UITabBarController 的一些属性设置小知识
设置标题栏的的颜色,ios7的话使用 [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)];
iOS 6 使用 _navigationController.navigationBar.tintColor = UIColorFromRGB(0x067AB5);
ios6及一下选中某一项的时候都会有一个灰色的背景框,可以使用下面该方法,用一张透明的图片把他给去掉,如果您有更好的方法也希望提供一起学习。
[[UITabBar appearance] setSelectionIndicatorImage:IMG(@"item_selected_bg")];
好了 ,收工,准备下班。。。
- iOS UINavigationController + UITabBarController
- [IOS]代码创建UINavigationController+UITabBarController
- iOS 自定义UINavigationController和UITabBarController
- IOS学习笔记(5)UINavigationController UITabBarController
- IOS学习笔记(5)UINavigationController UITabBarController
- iOS之UINavigationController与UITabBarController的使用
- iOS UINavigationController与UITabBarController的组合使用
- iOS Storyboard UI框架搭建,UITabBarController UINavigationController
- iOS UINavigationController与UITabBarController的组合使用
- iOS 笔记二:Multiple MVCs 、UINavigationController 、UITabBarController
- iOS UINavigationController与UITabBarController的组合使用
- iOS APP开发整理--UITabBarController,UINavigationController
- 【iOS开发-UITabBarController】UITabBarController上面的UINavigationController的设置
- UINavigationController,UITabBarController
- UINavigationController, UITabBarController
- UINavigationController+UITabBarController
- UINavigationController、UITabBarController
- [iOS]UINavigationController UITabBarController UITableView学习笔记
- paip.c3p0 数据库连接池 NullPointerException 的解决...
- LS_COLORS的妙用
- js刷新页面方法大全
- 浅谈Java中的Set、List、Map的区别
- 在MFC中添加用户自定义消息
- iOS UINavigationController + UITabBarController
- 2013-12-18 17:38:40
- uestc 1901 方方是个坏孩子
- iphone中结束电话后返回自己的应用
- itye 地址
- Android AudioManager 使用方法
- Git 基本配置
- 覆盖(不是重载)了equals方法,请一定要覆盖hashCode方法
- 学习locals和globals