UITabBarItem更改外观
2015-10-25 23:02
375 查看
下面的Tab按钮Home和 Video,
要求1: 一开始(或者说是未点击过)都是显示Normal图片本身的浅灰颜色,并且文字“Home”
和 “Video”也要跟随图片本身的浅灰色,
要求2: 按下去Home,图片显示Highlight图片本身的红颜色而不是蓝色,文字Home使用Highlight图片本身的红颜色
要求3: 再按Video,Home图片和文字就会恢复浅灰色,
找了资料,只在viewDidLoad 函数里设置了:
UIImage *imgSelected = [UIImage imageNamed:@"TabBarHomeHighlight"];//显示,代表tabBarItem被选中,要用原色调
UIImage *imgNormal = [UIImage imageNamed:@"TabBarHomeNormal"];
[_tabBarItem initWithTitle:@"Home" image:[imgNormal imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[imgSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
达到了要求1 和 要求2。
要求三没达到,变成了深灰色,搞了半天,似乎是系统自己改变了阴影
没辙,测试了半天,如此实现了要求3
只在viewDidLoad 放进:
[_tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:251/255.0 green:59/255.0 blue:52/255.0 alpha:1], NSForegroundColorAttributeName, nil] forState:UIControlStateSelected];//Home
字被点击后显示与图片相同的颜色
添加两个函数
- (void)viewWillAppear:(BOOL)animated {
UIImage *imgSelected = [UIImage imageNamed:@"TabBarHomeHighlight"];//显示,代表tabBarItem被选中,要用原色调
UIImage *imgNormal = [UIImage imageNamed:@"TabBarHomeNormal"];
[_tabBarItem initWithTitle:@"Home" image:[imgNormal imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[imgSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
}
- (void)viewWillDisappear:(BOOL)animated {
UIImage *imgSelected = [UIImage imageNamed:@"TabBarHomeHighlight"];//不显示,代表tabBarItem未选中,潘先生要淡灰色,经过试验,用此方式能达到目的
UIImage *imgNormal = [UIImage imageNamed:@"TabBarHomeNormal"];
[_tabBarItem initWithTitle:@"Home" image:imgNormal selectedImage:imgSelected];
}
差点就继承UITabBarViewController,自己来设定这些外观Apperance 了。。。还好通过测试得到了想要的效果。
要求1: 一开始(或者说是未点击过)都是显示Normal图片本身的浅灰颜色,并且文字“Home”
和 “Video”也要跟随图片本身的浅灰色,
要求2: 按下去Home,图片显示Highlight图片本身的红颜色而不是蓝色,文字Home使用Highlight图片本身的红颜色
要求3: 再按Video,Home图片和文字就会恢复浅灰色,
找了资料,只在viewDidLoad 函数里设置了:
UIImage *imgSelected = [UIImage imageNamed:@"TabBarHomeHighlight"];//显示,代表tabBarItem被选中,要用原色调
UIImage *imgNormal = [UIImage imageNamed:@"TabBarHomeNormal"];
[_tabBarItem initWithTitle:@"Home" image:[imgNormal imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[imgSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
达到了要求1 和 要求2。
要求三没达到,变成了深灰色,搞了半天,似乎是系统自己改变了阴影
没辙,测试了半天,如此实现了要求3
只在viewDidLoad 放进:
[_tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:251/255.0 green:59/255.0 blue:52/255.0 alpha:1], NSForegroundColorAttributeName, nil] forState:UIControlStateSelected];//Home
字被点击后显示与图片相同的颜色
添加两个函数
- (void)viewWillAppear:(BOOL)animated {
UIImage *imgSelected = [UIImage imageNamed:@"TabBarHomeHighlight"];//显示,代表tabBarItem被选中,要用原色调
UIImage *imgNormal = [UIImage imageNamed:@"TabBarHomeNormal"];
[_tabBarItem initWithTitle:@"Home" image:[imgNormal imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[imgSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
}
- (void)viewWillDisappear:(BOOL)animated {
UIImage *imgSelected = [UIImage imageNamed:@"TabBarHomeHighlight"];//不显示,代表tabBarItem未选中,潘先生要淡灰色,经过试验,用此方式能达到目的
UIImage *imgNormal = [UIImage imageNamed:@"TabBarHomeNormal"];
[_tabBarItem initWithTitle:@"Home" image:imgNormal selectedImage:imgSelected];
}
差点就继承UITabBarViewController,自己来设定这些外观Apperance 了。。。还好通过测试得到了想要的效果。
相关文章推荐
- NavigationBar中设置UIBarButtonItem的标题,颜色不改变问题
- Codeforces Round #327 (Div. 2) A Wizards' Duel (水题)
- iOS 瀑布流效果(模仿UITableView重用机制)
- OpenCV GUI之搭建MFC+OpenCV开发环境
- 优先队列ADT_PrioQueue
- Frequent values
- 使用js获取QueryString
- Building a RESTful Web Service(转)
- String、StringBuffer、StringBuilder区别
- UILabel边框效果
- Ant最完整的build.xml解释
- LeetCode62——Unique Paths
- iOS之UI高级---CALayer和CAAnimation的混合使用
- unique函数的作用
- 加密软件推荐PGP、TrueCrypt、GPG
- POJ 3094 Quicksum(简单的问题)
- UIViewController 中的 willMoveToParentViewController和didMoveToParentViewController的使用
- UIButton 文字图片排列
- 简述UIViewControl之间的七种传值方式~~~
- The Cloud Security Ecosystem: Technical, Legal, Business and Management Issues