UITabBarController设置选中时图片和文字的颜色
2016-06-12 14:57
567 查看
在做标签栏时,美工会给出两套图。一种是正常状态的,一种是选中状态的。但是当我们设置图片时tabBarItem.selectedImage = [UIImage imageNamed:[NSString stringWithFormat:@”tabbar_%@_hl”,picArr[i]]] 发现并没有什么用!显示的还是系统默认的的颜色–蓝色(字也是蓝色的)。
1、若你是纯代码写的,那你应该这样写!(ps:继承自UITabBarController, 创建标签栏的方式有很多但是设置选中时的图片和字体颜色可参考下面)
这样设置以后,效果如下。
2、当然现在可以用storyboard拖出来节省时间,但是你在这里设置选中时的图片也不会显示你给定的图片(还是系统默认的颜色)。
但是只要你在这里加一句话就行了
注意: 这里有点取巧。因为图片是一个颜色,若美工给的选中时的图片包含几种颜色,那这样设置是错的! 至于有没有一种简单的方法显示图片而不是设置颜色,再让我找找。(也可以给我留言)
2017-08-07
3、若你即想用StoryBoard,又想显示UI给出的颜色渐变图,你可以用下面这用恶心的方法(脱线跳转特能用)。
1、若你是纯代码写的,那你应该这样写!(ps:继承自UITabBarController, 创建标签栏的方式有很多但是设置选中时的图片和字体颜色可参考下面)
//创建tabbar - (void)createTabBar { //试图数组 NSArray* controllerArr = @[@"NewsViewController",@"PictureViewController",@"VideoViewController",@"MyViewController"]; //标题数组 NSArray* titleArr = @[@"哈哈",@"呵呵",@"嘿嘿",@"耶耶"]; //图片数组 NSArray* picArr = @[@"news",@"picture",@"video",@"setting"]; NSMutableArray* array = [[NSMutableArray alloc]init]; for(int i=0; i<picArr.count; i++) { Class cl=NSClassFromString(controllerArr[i]); UIViewController* controller = [[cl alloc]init]; UINavigationController* nv = [[UINavigationController alloc]initWithRootViewController:controller]; controller.title = titleArr[i]; nv.tabBarItem.image = [[UIImage imageNamed:[NSString stringWithFormat:@"tabbar_%@",picArr[i]]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; //设置选中时的图片 nv.tabBarItem.selectedImage = [[UIImage imageNamed:[NSString stringWithFormat:@"tabbar_%@_hl",picArr[i]]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; //设置选中时字体的颜色(也可更改字体大小) [nv.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateSelected]; [array addObject:nv]; } //self.tabBar.tintColor = [UIColor redColor]; self.viewControllers = array; }
这样设置以后,效果如下。
2、当然现在可以用storyboard拖出来节省时间,但是你在这里设置选中时的图片也不会显示你给定的图片(还是系统默认的颜色)。
但是只要你在这里加一句话就行了
@implementation RootTabBarViewController - (void)viewDidLoad { [super viewDidLoad]; //注意这里不能用 self.tabBarController.tabBar.tintColor self.tabBar.tintColor = [UIColor purpleColor]; }
注意: 这里有点取巧。因为图片是一个颜色,若美工给的选中时的图片包含几种颜色,那这样设置是错的! 至于有没有一种简单的方法显示图片而不是设置颜色,再让我找找。(也可以给我留言)
2017-08-07
3、若你即想用StoryBoard,又想显示UI给出的颜色渐变图,你可以用下面这用恶心的方法(脱线跳转特能用)。
//创建tabbar - (void)createTabBar { //试图数组 NSArray* controllerArr = @[@"NewsViewController",@"PictureViewController",@"VideoViewController",@"MyViewController"]; //标题数组 NSArray* titleArr = @[@"哈哈",@"呵呵",@"嘿嘿",@"耶耶"]; //图片数组 NSArray* picArr = @[@"news",@"picture",@"video",@"setting"]; NSMutableArray* array = [[NSMutableArray alloc]init]; for(int i=0; i<picArr.count; i++) { UIViewController* controller = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:controllerArr[i]]; UINavigationController* nv = [[UINavigationController alloc]initWithRootViewController:controller]; controller.title = titleArr[i]; nv.tabBarItem.image = [[UIImage imageNamed:[NSString stringWithFormat:@"tabbar_%@",picArr[i]]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; //设置选中时的图片 nv.tabBarItem.selectedImage = [[UIImage imageNamed:[NSString stringWithFormat:@"tabbar_%@_hl",picArr[i]]] imageWithRenderingMode:UIImag 4000 eRenderingModeAlwaysOriginal]; //设置选中时字体的颜色(也可更改字体大小) [nv.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateSelected]; [array addObject:nv]; } //self.tabBar.tintColor = [UIColor redColor]; self.viewControllers = array; }
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- Swift自定义iOS中的TabBarController并为其添加动画
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法