新浪微博开发总结--关于tabButton的图片渲染问题

在iOS7中,默认选中状态下,系统会自动给tabBarButton上的图片进行渲染,默认会按照tabBar的tintColor颜色进行渲染。但是在iOS6中则没有这种情况,因此在做适配的时候,

要注意这个问题。

以下文章摘自:http://www.2cto.com/kf/201502/375066.html

在之前开发的过程中,遇到过这样一个小问题:给button设置一张图片,图片是灰色,美工做的图肯定没有问题 ,给button设置图片的方法也很简单,一句代码搞定,但是运行的时候却发现,图片无缘无故变成了蓝色。后来自己研究了一下发现,在给一些控件设置图片的时候会默认把图片渲染成蓝色,找到问题所在,就好结局了,解决方法如下:

?
1
2
3
4
5
6
UIButton *loginBtn = [[UIButton alloc]initWithFrame:CGRectMake( 100 , 100 , 100 , 50 )];
loginBtn.showsTouchWhenHighlighted = YES;
UIImage *loginImg = [UIImage imageNamed:@ "login" ];
loginImg = [loginImg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[loginBtn setImage:loginImg forState:UIControlStateNormal];
[self.view addSubview:loginBtn];

- (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode

这个方法就是用来设置图片的渲染模式的

?
1
UIImageRenderingModeAlwaysOriginal这个枚举值是声明这张图片要按照原来的样子显示,不需要渲染成其他颜色
OK! 问题结局了。把这个小问题记录在这里 防止下次遇到又忘记怎么解决!

顺便添一句,如果你的美工没有给你button的尺寸,只是给了你button的图片,那么你可以直接取到图片的尺寸,然后把button设置为和图片同样大小的尺寸

?
1
2
3
4
5
6
7
8
UIButton *loginBtn = [UIButton buttonWithType:UIButtonTypeCustom];
loginBtn.showsTouchWhenHighlighted = YES;
UIImage *loginImg = [UIImage imageNamed:@ "login" ];
loginImg = [loginImg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  [loginBtn setImage:loginImg forState:UIControlStateNormal];
CGSize size = loginBtn.currentImage.size; //取到button的image的尺寸
loginBtn.frame = CGRectMake( 100 , 100 , size.width, size.height);
[self.view addSubview:loginBtn];


你可能感兴趣的:(IOS)