子控制器tabBarItem底部选中图片显示为自己配置的 不让系统渲染

大环境是在tabBarController底部的各个子控制器的显示tabBarItem图片 问题

UIViewController* vc = [UIViewcontroller alloc]init];

vc.tabBarItem.image = [UIImage imageNamed@"图片1"];

vc.tabBarItem.selectedImage = [UIImage imageNamed@"图片2"];

这样直接写的话,在iOS7中不会显示真正的图片2,因为在iOS7中会再次将图片2渲染为蓝色(有时这个挺好看的,但是如果UI什么的非要改,你只能打他改了哈)

所以要想 显示原图,必须做如下操作,告诉他不要 渲染


UIImage * selectedImage  = [UIImage imageNamed@"图片2"];

afterSelectedImage     = [selectedImage imageWIthRenderMode:uiimageRenderingModeAlwaysDrig];

vc.tabBarItem.selectedImage = afterSelectedImage;

因为调用imageWithRenderMode会返回一张新图片,所以要用afterSlectedImage接收,这样就OK了

不过还有一个小问题大家要注意,这个imageWithRenderMode是在iOS7环境之后可以用,iOS6没有这个方法,因此要做一个判断,iOS6不用做此操作就可以,

不做判断会报错'[UIImage imageWithRenderingMode:]unrecognized selector sent to instance '

 顺便说一下 因为是在windows上手写的代码,没有xcode,写的真累,大小写有些没区分 大家见谅

你可能感兴趣的:(子控制器tabBarItem底部选中图片显示为自己配置的 不让系统渲染)