您的位置:首页 > 移动开发 > IOS开发

ios毛玻璃效果

2015-06-11 17:52 471 查看
#import "ViewController.h"
#import "UIImage+ImageEffects.h"

@interface ViewController ()
// 点击手势
@property (strong, nonatomic) IBOutlet UITapGestureRecognizer *tapGesture;
// 背景图片
@property (weak, nonatomic) IBOutlet UIImageView *bgImage;
// 图层
@property (strong, nonatomic) CALayer *layer;
@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
self.bgImage.userInteractionEnabled = YES;
[self.tapGesture addTarget:self action:@selector(tapBacegroundImage)];
}

- (void)tapBacegroundImage
{
self.layer = [CALayer layer];
self.layer.frame = CGRectMake(0, 0, CGRectGetWidth(self.bgImage.frame), CGRectGetHeight(self.bgImage.frame));
[self.view.layer addSublayer:self.layer];

float scale = [UIScreen mainScreen].scale;
// <span style="white-space:pre">	</span>0.0表示 <span style="font-family: Arial, Helvetica, sans-serif;">[UIScreen mainScreen].scale</span>
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, YES, 0.0);
// 用于毛玻璃的截屏
[self.view drawViewHierarchyInRect:self.view.frame afterScreenUpdates:NO];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, CGRectMake(CGRectGetMinX(self.layer.frame) * scale, CGRectGetMinY(self.layer.frame) * scale, CGRectGetWidth(self.layer.frame) * scale, CGRectGetHeight(self.layer.frame) * scale));
image = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);

image = [image applyBlurWithRadius:50.0f tintColor:[UIColor colorWithWhite:1 alpha:0.1] saturationDeltaFactor:1.0f maskImage:nil];
self.layer.contents = (__bridge id)(image.CGImage);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  毛玻璃