私がやろうとしていたのは、UIImageViewを暗くして、画像の上にあるボタンとビューが表示されるようにすることでした。ios6でユーザーがFacebookを使って共有するときに与えられる効果を与えたかったのです。その背後にあるすべてのコンテンツは暗くなりますが、表示されます。私は使ってみました:
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共有を使用するときのように、暗くしたいだけで、背景が暗くなります。これは可能ですか?