开发过程中,我们经常会遇到一种情况,就是图片颜色的问题。
例如导航栏左右的图片按钮,如果图片的本身颜色不是你想要的,通过系统导航栏提供的方法,我们可以改变该图片显示的颜色:self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
如果是自定义导航栏,左右的图片按钮往往用UIButton控件来代替,这时的问题是如果再不更换图片的条件下,来设置自己想要的图片颜色,先来看一下UIImage的渲染模式:
/** UIImage渲染模式------UIImageRenderingMode
*
* UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式(默认属性)。
* UIImageRenderingModeAlwaysOriginal // 始终绘制图片原始状态,设置Tint Color属性无效。
* UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片(颜色)显示,忽略图片的颜色信息(也就是图片原本的东西是不显示的)。
*
*/
这是我在网上搜到的枚举解释,UIImageRenderingModeAlwaysTemplate是我们需要的模式,当我们设置好UIImage的渲染模式之后,便可以根据UIButton的TintColor属性来设置自己的颜色。完整代码如下:
UIButton *leftB = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *leftImg = [[UIImage imageNamed:@"icon_jiantou"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[leftB setImage:leftImg forState:UIControlStateNormal];
leftB.frame=CGRectMake(8, NavH-35,25,25);
[leftB setTintColor:[UIColor blackColor]];
[leftB addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:leftB];
网友评论