我想要做的是使UIImageView變暗,以便在圖像頂部產生按鈕和視圖。我想給它在ios6中使用Facebook分享用戶的效果。它背後的所有內容都變得更暗,但它是可見的。我試過使用:變暗UIImageView IOS
UIImage *maskedImage = [self darkenImage:image toLevel:0.5];
- (UIImage *)darkenImage:(UIImage *)image toLevel:(CGFloat)level
{
// Create a temporary view to act as a darkening layer
CGRect frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
UIView *tempView = [[UIView alloc] initWithFrame:frame];
tempView.backgroundColor = [UIColor blackColor];
tempView.alpha = level;
// Draw the image into a new graphics context
UIGraphicsBeginImageContext(frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[image drawInRect:frame];
// Flip the context vertically so we can draw the dark layer via a mask that
// aligns with the image's alpha pixels (Quartz uses flipped coordinates)
CGContextTranslateCTM(context, 0, frame.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextClipToMask(context, frame, image.CGImage);
[tempView.layer renderInContext:context];
// Produce a new image from this context
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *toReturn = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
UIGraphicsEndImageContext();
return toReturn;
}
但它沒有給我想要的效果。它會改變顏色,而我只是希望它變得更暗,就像當您使用ios Facebook共享時,背景變暗一樣。這可能嗎?
爲什麼不簡單地放置一個新的(黑色填充)視圖頂部與阿爾法設置爲適當的水平? (雖然有猜測,但我懷疑這比操縱底層UIImage要少得多的資源密集度。是的,沒有必要的測試,這是沒有意義的,但是你去了。) –
我之前使用過@middaparka給出的建議,並且它可以正常工作(只要你不想使用Facebook共享獲得漂亮的徑向漸變)。如果你想要的話,你需要創建一個自定義視圖並繪製它。 – petemorris
@middaparka爲什麼不簡單地回答問題而不是評論它,並將答案寫入評論? – Mecki