我有两个 UIImageViews,我想将图像从一个复制到另一个并调整颜色,但这会导致奇怪的拉伸。
这是我用来制作副本的代码:
_selectedIcon.image = groupView.icon;
[ViewUtils colorImageView:_selectedIcon withRed:0.843 Green:0.3176 andBlue:0.066667];
如果我只使用第一行,它会很好地复制图像,看起来像这样:
它有点大,因为它看起来突出显示。但它会复制并正确缩放。然后当我尝试为它着色时,它会这样做:
这是我用来为图像着色的代码:
+(void)colorImageView:(UIImageView*)source withRed:(CGFloat)red Green:(float)green andBlue:(float)blue
{
// Create a context containing the image.
UIGraphicsBeginImageContext(source.bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
// The mask needs to be upside down for some reason
CGContextTranslateCTM(context, 0, source.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextClipToMask(context, source.bounds, [source.image CGImage]);
CGContextFillRect(context, source.bounds);
[[UIColor colorWithRed:red green:green blue:blue alpha:1.0] set];
UIBezierPath *imagePath = [UIBezierPath bezierPathWithRect:source.bounds];
[imagePath fill];
// Retrieve the new image.
source.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
我尝试了许多不同的方法来缩放着色代码中的图像,但似乎没有任何效果。有人有建议吗?