iOS的毛玻璃效果

简要说明

毛玻璃(高斯模糊)效果是iOS开发中经常使用到的一个实现模糊效果的技能,实现这个效果有三种方法:

  1. 在iOS 8之前是通过UIToolbar 方式实现,使用也是非常简单,几行代码搞定。
  2. iOS 8之后苹果新增了一个类 UIVisualEffectView,通过这个类来实现毛玻璃效果与上面的 UIToolbar 一样,而且效率也非常之高,使用也是非常简单,几行代码搞定。UIVisualEffectView 是一个抽象类,不能直接使用,需通过它下面的三个子类来实现(UIBlurEffect,UIVisualEffevt,UIVisualEffectView)。
  3. 国外大神通过对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];

毛玻璃效果图


iOS的毛玻璃效果_第1张图片
毛玻璃效果图

你可能感兴趣的:(iOS的毛玻璃效果)