一、问题描述
对于iOS 7.0+上,在使用UITabBar时,如果仅仅指定image,如下
self.tabBarItem.image = [UIImage imageNamed:@"user"];
self.tabBarItem.imageInsets=UIEdgeInsetsMake(6, 0,-6, 0);
则显示效果就会如图1所示,即未选中为灰色,选中为蓝色。
那么问题来了,一般情况下,设计图是这种样式的概率很小,除非设计师深谙iOS UI,所以我们需要对UITabBar的颜色进行更改
二、问题解决
直接上代码:
self.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil image:[[UIImage imageNamed:@"user"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"user_act"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
self.tabBarItem.imageInsets=UIEdgeInsetsMake(6, 0,-6, 0);
看效果,如图2
三、总结
有时候,还是需要时常对一些常用的API进行复习,以防提笔忘字。
- (instancetype)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag;
- (instancetype)initWithTitle:(NSString *)title image:(UIImage *)image selectedImage:(UIImage *)selectedImage NS_AVAILABLE_IOS(7_0);
- (instancetype)initWithTabBarSystemItem:(UITabBarSystemItem)systemItem tag:(NSInteger)tag;
四、更新
上面的图片可以看到,底部tabbar中间图片因为设置大于49所以,被shadow的横线遮盖了。
OK,解决方法:
[[UITabBar appearance] setShadowImage:[UIImage new]];
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc]init]];
[[UITabBar appearance] setBackgroundColor:[UIColor whiteColor]];
上图,看效果,如图3