关于iOS Tabbar的一些设置
2015-06-11 16:27
423 查看
其实iOS Tabbar的可定制性非常高,我们没有必要重复造轮子,下面是笔者收集的一些tabbar的常用设置,希望对大家有所帮助。
设置tabbar选中颜色
iOS7设置如下:
[self.tabBarController.tabBarsetSelectedImageTintColor:[UIColor greenColor]];
ios8中如下设置:
self.tabBar.tintColor=[UIColor greenColor];
消除tabbar边框
在appdelegate的程序启动处:
[[UITabBar appearance] setShadowImage:[[UIImage alloc]init]];
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc]init]];
设置tabbar item原始图标与原始选中图标,而不是系统自动填充的颜色
设置tabbar背景图片
设置tabbar item选中时的背景图片
1、5.0以上版本
2、5.0以下版本
首先实现如下方法:
改方法的实质就是循环tabBar的subViews, 找到tabBar中的这个view, 是一个UITabBarSelectionIndicatorView的view,然后把它替换成你自己创建的UIImageView, 上例中的self.selectedItemBgImageView.
然后需要把UITabBarController的delegate设为self, 在tabBarController:didSelectViewController的代理方法中执行上面的方法:[self setNoHighlistTabBar:self];
还有setSelectIndex:方法中也要执行[self setNoHighlistTabBar:self];
设置tabbar选中颜色
iOS7设置如下:
[self.tabBarController.tabBarsetSelectedImageTintColor:[UIColor greenColor]];
ios8中如下设置:
self.tabBar.tintColor=[UIColor greenColor];
消除tabbar边框
在appdelegate的程序启动处:
[[UITabBar appearance] setShadowImage:[[UIImage alloc]init]];
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc]init]];
设置tabbar item原始图标与原始选中图标,而不是系统自动填充的颜色
// 拿到 TabBar 在拿到想应的item UITabBar *tabBar = _tabBarController.tabBar; UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; UITabBarItem *item1 = [tabBar.items objectAtIndex:1]; UITabBarItem *item2 = [tabBar.items objectAtIndex:2]; UITabBarItem *item3 = [tabBar.items objectAtIndex:3]; // 对item设置相应地图片 item0.selectedImage = [[UIImage imageNamed:@"recognize-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item0.image = [[UIImage imageNamed:@"recognize"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item1.selectedImage = [[UIImage imageNamed:@"life-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item1.image = [[UIImage imageNamed:@"life"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item2.selectedImage = [[UIImage imageNamed:@"edit-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item2.image = [[UIImage imageNamed:@"edit"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item3.selectedImage = [[UIImage imageNamed:@"setting-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item3.image = [[UIImage imageNamed:@"setting"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
设置tabbar背景图片
UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, Main_Screen_Width, 49)]; backView.backgroundColor = [UIColor redColor]; [self.tabBar insertSubview:backView atIndex:0]; self.tabBar.opaque = YES;
设置tabbar item选中时的背景图片
1、5.0以上版本
self.tabBar.selectionIndicatorImage = [UIImage imageNamed:@"system_tabbar_item_selected.png"];
2、5.0以下版本
首先实现如下方法:
- (void)setNoHighlistTabBar:(UITabBarController *)tabBarController { NSArray * tabBarSubviews = [tabBarController.tabBar subviews]; int index4SelView; if(tabBarController.selectedIndex+1 > 4) {//selected the last tab. index4SelView = [tabBarSubviews count]-1; } else if([tabBarController.viewControllers count] > 5) {//have "more" tab. and havn't selected the last tab:"more" tab. index4SelView = [tabBarSubviews count] - 5 + tabBarController.selectedIndex; } else {//have no "more" tab. index4SelView = [tabBarSubviews count] - [tabBarController.viewControllers count] + tabBarController.selectedIndex; } if([tabBarSubviews count] < index4SelView+1) { assert(false); return; } UIView * selView = [tabBarSubviews objectAtIndex:index4SelView]; NSArray * selViewSubviews = [selView subviews]; for(UIView * v in selViewSubviews) { if(v && [NSStringFromClass([v class]) isEqualToString:@"UITabBarSelectionIndicatorView"]) {//the v is the highlight view. [self.selectedItemBgImageView removeFromSuperview]; [selView insertSubview:self.selectedItemBgImageView belowSubview:v]; [v removeFromSuperview]; break; } } }
改方法的实质就是循环tabBar的subViews, 找到tabBar中的这个view, 是一个UITabBarSelectionIndicatorView的view,然后把它替换成你自己创建的UIImageView, 上例中的self.selectedItemBgImageView.
然后需要把UITabBarController的delegate设为self, 在tabBarController:didSelectViewController的代理方法中执行上面的方法:[self setNoHighlistTabBar:self];
还有setSelectIndex:方法中也要执行[self setNoHighlistTabBar:self];
相关文章推荐
- ios8 Xcode6 设置Launch Image 启动图片
- iOS 合并.a文件,制作通用静态库
- 【iOS】代理传值与块代码传值
- iOS中静态库的制作——使用创建静态库项目的方式创建静态库
- [ios]对约束变化动画处理 .constant动画
- iOS 正则匹配,截取需要字符串的用法
- iOS多线程编程Part 1/3 - NSThread & Run Loop
- IOS 简单的动画自定义方法(旋转、移动、闪烁等)
- iOS KVO的原理
- iOS 打开iPhone照相机和相册
- IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
- 使用Xcode和Instruments调试解决iOS内存泄露
- [IOS 开发] 多线程 锁 互斥 同步
- 适配iOS 8备忘录 开始启动
- Xamarin iOS教程之编辑界面编写代码
- iOS苹果推送功能实现步骤
- IOS中延时执行的几种方式的比较和汇总
- iOS 的 XMPPFramework 简介
- debian7源码安装nrpe时Cannot find ssl libraries及解决办法
- ios 方向工具汇总记录 实时补充