您的位置:首页 > 产品设计 > UI/UE

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 了。。。还好通过测试得到了想要的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: