iOS UI

UIImage渲染模式------UIImageRenderin

2019-04-28  本文已影响0人  燃_火

开发过程中,我们经常会遇到一种情况,就是图片颜色的问题。

例如导航栏左右的图片按钮,如果图片的本身颜色不是你想要的,通过系统导航栏提供的方法,我们可以改变该图片显示的颜色: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];

上一篇下一篇

猜你喜欢

热点阅读