最近将Xcode的Base SDK升级到iOS8.0以后,发现使用的系统级的UITabBar,图标在selected状态都变成蓝色,很郁闷。
查找资料后发现UITabBarItem.h里面说的很清楚,
/* These methods are now deprecated. Please use -initWithTitle:image:selectedImage:.*/
- (void)setFinishedSelectedImage:(UIImage *)selectedImage withFinishedUnselectedImage:(UIImage *)unselectedImage NS_DEPRECATED_IOS(5_0,7_0,"Use initWithTitle:image:selectedImage: or the image and selectedImage properties along with UIImageRenderingModeAlwaysOriginal");
UIImageRenderingModeAlwaysOriginal( 始终绘制图片原始状态)是关键,即需要对图片多做一次小小的处理,即
//构造TabBarItem:title-标题、image-图片、selectedImage-选中时图片
- (UITabBarItem *)itemWithTitle:(NSString *)title image:(UIImage *)image selectedImage:(UIImage *)selectedImage
{
//始终绘制图片原始状态
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UITabBarItem *tabBarItem = [[UITabBarItemalloc]initWithTitle:titleimage:imageselectedImage:selectedImage];
return tabBarItem;
}
这样,在构建TabBarItem时,直接调用这个方法就可以了。