我沒能找到這一個妥善的解決辦法,我需要一個快速的解決方法。下面是一個函數,它給出一個UIImage,返回一個黑暗的alpha填充變暗的新圖像。上下文填充命令可以替換爲其他繪製或填充例程以提供不同類型的變暗。
這是未優化,並用圖形API的最小的知識做出。
您可以使用此功能來設置UIControlStateHighlighted國家形象,這樣至少這將是黑暗的。
+ (UIImage *)darkenedImageWithImage:(UIImage *)sourceImage
{
UIImage * darkenedImage = nil;
if (sourceImage)
{
// drawing prep
CGImageRef source = sourceImage.CGImage;
CGRect drawRect = CGRectMake(0.f,
0.f,
sourceImage.size.width,
sourceImage.size.height);
CGContextRef context = CGBitmapContextCreate(NULL,
drawRect.size.width,
drawRect.size.height,
CGImageGetBitsPerComponent(source),
CGImageGetBytesPerRow(source),
CGImageGetColorSpace(source),
CGImageGetBitmapInfo(source)
);
// draw given image and then darken fill it
CGContextDrawImage(context, drawRect, source);
CGContextSetBlendMode(context, kCGBlendModeOverlay);
CGContextSetRGBFillColor(context, 0.f, 0.f, 0.f, 0.5f);
CGContextFillRect(context, drawRect);
// get context result
CGImageRef darkened = CGBitmapContextCreateImage(context);
CGContextRelease(context);
// convert to UIImage and preserve original orientation
darkenedImage = [UIImage imageWithCGImage:darkened
scale:1.f
orientation:sourceImage.imageOrientation];
CGImageRelease(darkened);
}
return darkenedImage;
}
我有一個類似的問題:
那麼你可以使用它像圖像到從uiimagepicker選擇的圖片,圖像顯示旋轉90度。 – marciokoko