【iOS 开发】实现毛玻璃(高斯模糊)效果

栏目: IOS · 发布时间: 7年前

内容简介:【iOS 开发】实现毛玻璃(高斯模糊)效果

【iOS 开发】实现毛玻璃(高斯模糊)效果

下面列举了三种实现毛玻璃效果的方法,大家可以按需求选择相应的方法,给大家一个参考,前面两个是官方的,使用起来比较高效,第三个使用的是第三方 LBBlurredImage 这个库,大家还是看需求使用吧,苹果推荐使用 UIBlurEffect 。

1. UIToolbar 方式实现

苹果在 iOS7.0 之后,很多系统界面都使用了毛玻璃效果,增加了界面的美观性,比如下图的通知中心界面:

【iOS 开发】实现毛玻璃(高斯模糊)效果

但是其 iOS7.0 的 SDK 并没有提供给开发者实现毛玻璃效果的 API ,所以很多人都是通过一些别人封装的框架来实现,后面我也会讲到一个。

其实在 iOS7.0 之前还是有系统的类可以实现毛玻璃效果的,就是 UIToolbar 这个类,并且使用相当简单,几行代码就可以搞定。

下面是代码实现:

创建一个 UIToolbar 实例,设置它的 frame 或者也可以通过添加约束,然后 UIToolbar 有一个属性:barStyle,设置对应的枚举值来呈现毛玻璃的样式,最后再添加到需要进行毛玻璃效果的 view 上即可。

/*
 毛玻璃的样式(枚举)
 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 * 0.5, bgImgView.frame.size.height)];
toolbar.barStyle = UIBarStyleBlackTranslucent;
[bgImgView addSubview:toolbar];

效果图:

【iOS 开发】实现毛玻璃(高斯模糊)效果

2. UIBlurEffect 方式实现

在 iOS8.0 之后,苹果新增了一个类 UIVisualEffectView,通过这个类来实现毛玻璃效果与上面的 UIToolbar 一样,而且效率也非常之高,使用也是非常简单,几行代码搞定。

UIVisualEffectView 是一个抽象类,不能直接使用,需通过它下面的三个子类来实现(UIBlurEffect,UIVisualEffevt,UIVisualEffectView)。

特别注意: 这个类是 iOS8.0 之后才适用, 所以如果项目要兼容 iOS7.0 的话,还是要考虑其它的两种方法了。

下面是代码实现:

同样是先快速的实例化 UIBlurEffect 并设置毛玻璃的样式,然后再通过 UIVisualEffectView 的构造方法将 UIBlurEffect 的实例添加上去,最后设置 frame 或者是通过添加约束,将 effectView 添加到要实现了毛玻璃的效果的 view 控件上。

/*
 毛玻璃的样式(枚举)
 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 * 0.5, bgImgView.frame.size.height);
[bgImgView addSubview:effectView];

效果图:

【iOS 开发】实现毛玻璃(高斯模糊)效果

3. LBBlurredImage 方式实现

最后再来给大家介绍一个国外大神封装的 UIImageView 的分类,里面不管是怎么实现的,反正使用非常简单,只要一句代码就搞定。

下面是代码实现:

// 对背景图片进行毛玻璃效果处理 参数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 开发】实现毛玻璃(高斯模糊)效果

本文转载自:http://www.cnblogs.com/arvin-sir/p/5131358.html?utm_source=tuicool&utm_medium=referral


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Growth Hacker Marketing

Growth Hacker Marketing

Ryan Holiday / Portfolio / 2013-9-3 / USD 10.31

Dropbox, Facebook, AirBnb, Twitter. A new generation of multibillion dollar brands built without spending a dime on “traditional marketing.” No press releases, no PR firms, and no billboards in Times ......一起来看看 《Growth Hacker Marketing》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具