简要说明
毛玻璃(高斯模糊)效果是iOS开发中经常使用到的一个实现模糊效果的技能,实现这个效果有三种方法:
- 在iOS 8之前是通过UIToolbar 方式实现,使用也是非常简单,几行代码搞定。
- iOS 8之后苹果新增了一个类 UIVisualEffectView,通过这个类来实现毛玻璃效果与上面的 UIToolbar 一样,而且效率也非常之高,使用也是非常简单,几行代码搞定。UIVisualEffectView 是一个抽象类,不能直接使用,需通过它下面的三个子类来实现(UIBlurEffect,UIVisualEffevt,UIVisualEffectView)。
- 国外大神通过对UIImageView 的分类进行封装好的第三方库** LBBlurredImage**来实现,大伙可以前往LBBlurredImage github地址看实现原理与源代码
苹果推荐我们使用第二种方法。
UIToolbar 方式实现
/*
毛玻璃的样式(枚举)
UIBarStyleDefault = 0,
UIBarStyleBlack = 1,
UIBarStyleBlackOpaque = 1, // Deprecated. Use UIBarStyleBlack
UIBarStyleBlackTranslucent = 2, // Deprecated. Use UIBarStyleBlack and set the translucent property to YES
*/
UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds];
bgImgView.image = [UIImage imageNamed:@"huoying.jpg"];
[self.view addSubview:bgImgView];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, bgImgView.frame.size.width, bgImgView.frame.size.height)];
toolbar.barStyle = UIBarStyleBlackTranslucent;
[bgImgView addSubview:toolbar];
UIVisualEffectView实现
/*
毛玻璃的样式(枚举)
UIBlurEffectStyleExtraLight,
UIBlurEffectStyleLight,
UIBlurEffectStyleDark
*/
UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds];
bgImgView.image = [UIImage imageNamed:@"huoying.jpg"];
[self.view addSubview:bgImgView];
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect];
effectView.frame = CGRectMake(0, 0, bgImgView.frame.size.width , bgImgView.frame.size.height);
[bgImgView addSubview:effectView];
第三方库LBBlurredImage
// 对背景图片进行毛玻璃效果处理 参数blurRadius默认是20,可指定,最后一个参数block回调可以为nil
UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds];
[bgImgView setImageToBlur: [UIImage imageNamed:@"huoying.jpg"] blurRadius:20 completionBlock:nil];
[self.view addSubview:bgImgView];
毛玻璃效果图