着色(Tint Color)是iOS7界面中的一个重大改变,你可以设置一个UIImage再渲染时是否使用当前视图的TintColor。iOS7中UIImage新增了一个只读属性:randeringMode,对应的还有一个新增方法:imageWithRenderingMode:。
// Create a version of this image with the specified rendering mode. By default, images have a rendering mode of UIImageRenderingModeAutomatic.
- (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode NS_AVAILABLE_IOS(7_0);
@property(nonatomic, readonly) UIImageRenderingMode renderingMode NS_AVAILABLE_IOS(7_0);
它使用UIImageRenderingMode枚举值来设置图片的renderingMode属性。该枚举中包含下列值:
typedef NS_ENUM(NSInteger, UIImageRenderingMode) {
UIImageRenderingModeAutomatic, // Use the default rendering mode for the context where the image is used
UIImageRenderingModeAlwaysOriginal, // Always draw the original image, without treating it as a template
UIImageRenderingModeAlwaysTemplate, // Always draw the image as a template image, ignoring its color information
} NS_ENUM_AVAILABLE_IOS(7_0);
UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式
UIImageRenderingModeAlwaysOriginal // 始终绘制图片原始状态,不使用TintColor
UIImageRenderingModeAlwaysTemlate // 始终根据Tint Color 绘制图片,忽略图片的颜色信息
renderingMode属性的默认值是UIImageRenderingModeAutomatic,即UIImage是否使用TintColor取决于它显示的位置
什么情况下使用?
某些时候,在为某些空间添加图片的时候,会不显示图片,只显示控件的tint color,故需要将其着色改为原始状态,才可以显示出来图片。
UIImage *pic = [UIImage imageNamed:@"qq.png"];
pic = [pic imageWithRenderingMode:UIImageRenderingModealwaysOriginal];