[英]Why is my map view callout translucent/transparent and how do I change it's color?
[英]How do I change a partially transparent image's color in iOS?
我有一個部分透明的單色圖像。 我有圖像的普通版和@ 2X版。 我希望能夠在代碼中為圖像着色不同的顏色。 下面的代碼適用於普通圖像,但@ 2X最終會產生偽像。 正常圖像可能有類似問題如果是這樣,我無法通過分辨率檢測到它。
+(UIImage *) newImageFromMaskImage:(UIImage *)mask inColor:(UIColor *) color {
CGImageRef maskImage = mask.CGImage;
CGFloat width = mask.size.width;
CGFloat height = mask.size.height;
CGRect bounds = CGRectMake(0,0,width,height);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmapContext = CGBitmapContextCreate(NULL, width, height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);
CGContextClipToMask(bitmapContext, bounds, maskImage);
CGContextSetFillColorWithColor(bitmapContext, color.CGColor);
CGContextFillRect(bitmapContext, bounds);
CGImageRef mainViewContentBitmapContext = CGBitmapContextCreateImage(bitmapContext);
CGContextRelease(bitmapContext);
UIImage *result = [UIImage imageWithCGImage:mainViewContentBitmapContext];
return result;
}
如果重要,則使用UIImage imageNamed:
加載蒙版圖像。 此外,我確認在視網膜模擬器上運行時正在加載@ 2X圖像。
更新 :以上代碼有效。 我看到的工件是由圖像消費者完成的其他變換引起的。 這個問題可以刪除,因為它不再是一個問題,或留給后人。
我更新了上面的代碼以解釋視網膜分辨率圖像:
- (UIImage *) changeColorForImage:(UIImage *)mask toColor:(UIColor*)color {
CGImageRef maskImage = mask.CGImage;
CGFloat width = mask.scale * mask.size.width;
CGFloat height = mask.scale * mask.size.height;
CGRect bounds = CGRectMake(0,0,width,height);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmapContext = CGBitmapContextCreate(NULL, width, height, 8, 0, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedLast);
CGContextClipToMask(bitmapContext, bounds, maskImage);
CGContextSetFillColorWithColor(bitmapContext, color.CGColor);
CGContextFillRect(bitmapContext, bounds);
CGImageRef mainViewContentBitmapContext = CGBitmapContextCreateImage(bitmapContext);
CGContextRelease(bitmapContext);
return [UIImage imageWithCGImage:mainViewContentBitmapContext scale:mask.scale orientation:UIImageOrientationUp];
}
問題中的代碼是工作代碼。 這個bug在別的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.