iOS7.0的SDK并没有提供给开发者实现毛玻璃效果的API,所以很多人都是通过一些别人封装的框架来实现

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

下面是代码实现:

创建一个UIToolbar实例,设置它的frame或者也可以通过添加约束

然后UIToolbar有一个属性:barStyle,设置对应的枚举值来呈现毛玻璃的样式,最后再添加到需要进行毛玻璃效果的view上即可.

?

/*

毛玻璃的样式(枚举)

UIBarStyleDefault = ,

UIBarStyleBlack = ,

UIBarStyleBlackOpaque = , // Deprecated. Use UIBarStyleBlack

UIBarStyleBlackTranslucent = , // 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(, , bgImgView.frame.size.width*., bgImgView.frame.size.height)];

toolbar.barStyle = UIBarStyleBlackTranslucent;

[bgImgView addSubview:toolbar];

通过视图结构可以看到UIToolbar包含了三个子视图

一个背景图片和1个背景view,还有1个背景特效view,正是这几个视图结合在一起实现了毛玻璃的效果

在iOS8.0之后,苹果新增了一个类UIVisualEffectView,通过这个类来实现毛玻璃效果与上面的UIToolbar一样,而且效率也非常之高,使用也是非常简单,几行代码搞定. UIVisualEffectView是一个抽象类,不能直接使用,需通过它下面的三个子类来实现(UIBlurEffect, UIVisualEffevt, UIVisualEffectView);

子类UIBlurEffect只有一个类方法,用来快速创建一个毛玻璃效果,参数是一个枚举,用来设置毛玻璃的样式,而UIVisualEffectView则多了两个属性和两个构造方法,用来快速将创建的毛玻璃添加到这个UIVisualEffectView上.

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

下面来看看实现代码:

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

UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds];

bgImgView.image = [UIImage imageNamed:@"huoying.jpg"];

bgImgView.contentMode = UIViewContentModeScaleAspectFill;

//[bgImgView setImageToBlur: [UIImage imageNamed:@"huoying.jpg"] blurRadius: completionBlock:nil];

bgImgView.userInteractionEnabled = YES;

[self.view addSubview:bgImgView];

/*

毛玻璃的样式(枚举)

UIBlurEffectStyleExtraLight,

UIBlurEffectStyleLight,

UIBlurEffectStyleDark

*/

UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];

UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect];

effectView.frame = CGRectMake(, , bgImgView.frame.size.width*., bgImgView.frame.size.height);

[bgImgView addSubview:effectView];

但是我们来看看视图结构,大家会发现和Toolbar不一样哦!

其实是因为UIVisualEffectView这个类,构造方法帮我们创建了一个view,而这个view我们给它做了毛玻璃处理,再将其覆盖到了背景图之上

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

下面先看代码:

UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds];

//bgImgView.image = [UIImage imageNamed:@"huoying.jpg"];

bgImgView.contentMode = UIViewContentModeScaleAspectFill;

// 对背景图片进行毛玻璃效果处理 参数blurRadius默认是,可指定,最后一个参数block回调可以为nil

[bgImgView setImageToBlur: [UIImage imageNamed:@"huoying.jpg"] blurRadius: completionBlock:nil];

bgImgView.userInteractionEnabled = YES;

[self.view addSubview:bgImgView];

效果图:

再来看看添加毛玻璃效果后的视图结构:

哈哈哈, 大家应该看懂了, 这是直接对背景图片进行了高斯模糊处理了,其它就不解释了.

最新文章

  1. javascript数组去重的两个方法
  2. Windows Server 2012上PHP运行环境搭建的简易教程(Win08适用)
  3. 根据复选框checkbox的选中状态来打开或关闭隐藏层
  4. HttpURLConnection发送和接受返回值
  5. visualSVN server库迁移
  6. MFC之MessageBox用法
  7. (转)利用ant在Mac 下自动化打包签名Android程序
  8. WebService使用的一些总结
  9. iframe 自适应
  10. SPI 方式初始化 SD 卡总流程图(V2.0)
  11. 隐写工具Hydan的安装使用方法
  12. Docker实现容器具有固定IP
  13. 用 ArrayList 集合调用商品类
  14. Android基础之6.0系统以上的权限分配
  15. [firefox] Scrapbook Plus的改进版Scrapbook X
  16. Boost中的网络库ASIO,nginx
  17. zookeeper 负载均衡 核心机制-实现原理 包含ZAB协议(滴滴,阿里面试)
  18. ipconfig 命令有什么作用
  19. PHP做Web开发的MVC框架(Smarty使用说明 )
  20. UITableView的headerView展开缩放动画

热门文章

  1. 【转载】 linux dig 命令使用方法
  2. Python3基础 函数 参数 多个参数都有缺省值,需要指定参数进行赋值
  3. xcopy命令拷贝文件夹和文件
  4. SeetaFaceEngine2 实例
  5. osg创建灯光
  6. 【FreeMarker】FreeMarker快速入门(一)
  7. 【html】window.open()被部分浏览器拦截问题
  8. 关于Image模块的调色板
  9. 深层对象转深层数组(重点:先把对象转数组,直接for in 遍历对象不太可行)
  10. request.GET、request.POST、request.body(持续更新)