因要根据电量 显示不同的颜色,且图片形状一样,切图多了。太不人性化了
想到用图像混合,给个底图,想要什么颜色图自己混合颜色。
BlendMode kCGBlendModeMultiply 说明:正片叠底;混合了前景和背景的颜色,最终颜色比原先的都暗;
底图白色边框,里面自己用层动态画出来。我们将要渲染的是边框
简单扩展一下UIImage ,使用起来也简单
[self.imageViewBattery setImage:[[UIImage imageNamed:@"battery_back_tintcolour"]imageWithMultiplyTintColor:colorBattery]];
以下是扩展代码
#import
@interface UIImage (Tint)
- (UIImage *)imageWithMultiplyTintColor:(UIColor *)tintColor;
@end
#import "UIImage+Tint.h"
@implementation UIImage (Tint)
- (UIImage*)imageWithTintColor:(UIColor*)tintColor blendMode:(CGBlendMode)blendMode
{
//We want to keep alpha, set opaque to NO; Use 0.0f for scale to use the scale factor of the device’s main screen.
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f);
[tintColor setFill];
CGRect bounds = CGRectMake(0, 0, self.size.width, self.size.height);
UIRectFill(bounds);
//Draw the tinted image in context
[self drawInRect:boundsblendMode:blendModealpha:1.0f];
if (blendMode != kCGBlendModeDestinationIn) {
[self drawInRect:bounds blendMode:kCGBlendModeDestinationIn alpha:1.0f];
}
UIImage *tintedImage = UIGraphics GetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returntintedImage;
}
-(UIImage * )imageWithMultiplyTintColor:(UIColor *)tintColor
{
return [self imageWithTintColor:tintColor blendMode:kCGBlendModeMultiply];
}
@end
需要注意的是底图非填充部分采用透明色
网友评论