【使用UIVisualEffectView实现毛玻璃效果】


在iOS 8后,苹果开放了不少创建特效的接口,其中就包括创建毛玻璃(blur)的接口。

通常要想创建一个特殊效果(如blur效果),可以创建一个UIVisualEffectView视图对象,这个对象提供了一种简单的方式来实现复杂的视觉效果。这个可以把这个对象看作是效果的一个容器,实际的效果会影响到该视图对象底下的内容,或者是添加到该视图对象的contentView中的内容。

 

举例来看看如果使用UIVisualEffectView实现我们需要的效果:

 1 - (void)viewDidLoad {  2     
 3  [super viewDidLoad];  4     
 5     CGRect screenRect = [[UIScreen mainScreen] bounds];  6     
 7     //添加待模糊的图片视图
 8     UIImageView * imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image"]];  9  [imageView setFrame:screenRect]; 10  [self.view addSubview:imageView]; 11     
12     // 生成特定样式的模糊效果
13     UIBlurEffect * blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; 14     
15     // 根据模糊效果生成模糊视图
16     UIVisualEffectView * effectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 17     
18     // 设定模糊区域大小
19  [effectView setFrame:screenRect]; 20     
21  [self.imageView addSubview:effectView]; 22 }

 

以上代码中:

  1、我们首先添加一个全屏显示的imageView,并给其实指定了显示的图像;

  2、调用类 UIBlurEffect 的静态方法 effectWithStyle: 生成模糊样式对象,其后面的枚举型参数(参看下面代码)决定了最终的模糊效果;

1 typedef NS_ENUM(NSInteger, UIBlurEffectStyle) { 2  UIBlurEffectStyleExtraLight, 3  UIBlurEffectStyleLight, 4  UIBlurEffectStyleDark 5 }

  3、根据模糊样式对象生成 UIVisualEffectView 模糊视图;

  4、指定模糊视图的Frame;

  5、将模糊视图作为子视图添加到imageView上;

 

至此,实现了我们最终需要的效果,通过代码不难看出,我们是生成了一张半透明的模糊视图,其大小和需要模糊的imageView大小一样,最后将其盖在了imageView上面,实现了模糊效果;如果我们要实现局部模糊,那么只需调整UIVisualEffectView的Frame即可;

需要注意是的,不应该直接添加子视图到UIVisualEffectView视图中,而是应该添加到UIVisualEffectView对象的contentView中。

这里我们只单单通过UIVisualEffectView实现模糊这一功用,对于其它用法请自行查询

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM