前言:

之前项目中有用到过Objective-C的的模糊效果,感觉很是不错,而且iOS8之后官方SDK也直接提供了可以实现毛玻璃效果的三个类:UIBlurEffect、UIVibrancyEffect 和 UIVisualEffectView。通过这三个类可以很容易的去实现毛玻璃效果。

最近在熟悉Swift,所以今天说的是使用Swift去实现这种效果。

前提:

我们去实现的模糊效果有个前提,就是需要背景有一个色调,这样才能使毛玻璃有一个明显的效果,这里我直接在底部添加一个背景图片吧

我们就在这张背景图片上去实现模糊效果。

 //MARK: ******* 创建背景图片 *************
func createBackgroundImageView() {
self.imageView1 = UIImageView(frame: self.view.bounds) imageView1.layer.borderColor = UIColor.black.cgColor
imageView1.layer.borderWidth = imageView1.layer.cornerRadius = imageView1.clipsToBounds = true imageView1.image = UIImage(named: "") self.view.addSubview(imageView1) }

1、UIBlurEffect类(用作创建一个模糊效果)

SDK中提供的模糊效果有5种,其中两种是iOS10之后添加的,我们来看一下:

 /**
public enum UIBlurEffectStyle : Int { case extraLight case light case dark @available(iOS 10.0, *)
case regular // Adapts to user interface style @available(iOS 10.0, *)
case prominent // Adapts to user interface style
}
*/

我们就直接创建好了,代码如下:

//创建一个模糊效果
let blurEffect = UIBlurEffect(style: .light)

上面使用的是普通的亮色。

2、UIVibrancyEffect类

UIVibrancyEffect 主要用于放大和调整 UIVisualEffectView 视图下面的内容的颜色,同时让 UIVisualEffectView 的 contentView 中的内容看起来更加生动。

 //创建并添加vibrancy视图
let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect)

3、UIVisualEffectView类

UIVisualEffectView:模糊视图。将前面创建的 UIBlurEffect 类的实例应用到这个模糊视图上。将 UIVisualEffectView 类的实例(模糊视图)置于待毛玻璃化的视图之上即可。在其下方的所有视图都会有模糊效果。值得一提的是:不要直接添加子视图去UIVisualEffectView,而是要添加到contentView上。

//创建一个承载模糊效果的视图
let blurView = UIVisualEffectView(effect: blurEffect)

4、整体的代码实现

下面我们直接看整体的代码实现:

这部分分为两种,效果也是不一样的:

先看一下效果图:

4.1   UIBlurEffect和 UIVisualEffectView两者配合使用

    func showBlurEffect() {

        //创建一个模糊效果
let blurEffect = UIBlurEffect(style: .light)
//创建一个承载模糊效果的视图
let blurView = UIVisualEffectView(effect: blurEffect) blurView.frame = CGRect(x: , y: , width: viewWidth+*space, height: Double(viewHeight)) let label = UILabel(frame: CGRect(x: , y: , width: viewWidth - , height: )) label.text = "bfjnecsjdkcmslc,samosacmsacdfvneaui" label.font = UIFont.boldSystemFont(ofSize: )
label.numberOfLines =
label.textAlignment = .center
label.textColor = UIColor.white blurView.contentView.addSubview(label) self.view.addSubview(blurView) }

4.2  UIBlurEffect、UIVibrancyEffect 和 UIVisualEffectView

    func showBlurEffectWithUIVibrancyEffect() {
//创建一个模糊效果
let blurEffect = UIBlurEffect(style: .light)
//创建一个承载模糊效果的视图
let blurView = UIVisualEffectView(effect: blurEffect) blurView.frame = CGRect(x: , y: Double(viewHeight+), width: viewWidth+*space, height: Double(viewHeight)) self.view.addSubview(blurView) //创建并添加vibrancy视图
let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect) let vibrancyView = UIVisualEffectView(effect:vibrancyEffect)
vibrancyView.frame = self.view.bounds let label = UILabel(frame: CGRect(x: , y: viewY, width: viewWidth - , height: )) label.text = "bfjnecsjdkcmslc,samosacmsacdfvneaui" label.font = UIFont.boldSystemFont(ofSize: )
label.numberOfLines =
label.textAlignment = .center
label.textColor = UIColor.white vibrancyView.contentView.addSubview(label) blurView.contentView.addSubview(vibrancyView) self.view.addSubview(blurView) }

图片的前者是:UIBlurEffect和 UIVisualEffectView两者配合使用

后者:UIBlurEffect、UIVibrancyEffect 和 UIVisualEffectView


Swift 之模糊效果(毛玻璃效果,虚化效果)的实现的更多相关文章

  1. iOS模糊效果(毛玻璃效果)的实现

    前一段时间项目中用到毛玻璃效果,那时对UIBlurEffect类和 UIVisualEffectView这两个类做了一部分了解.但当时并没有去特别的深入研究,直到项目做完后,才静下心来好好研究了一番. ...

  2. 使用CSS3制作导航条和毛玻璃效果

    导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生一些.简单的说,毛玻璃其实就是让图片或者背景使用相应的方法进行模糊处理.这种效果对用户来说是十分具有视觉冲击力的. 本次分享的主题 ...

  3. 【CSS】梯形、平行四边形导航条与毛玻璃效果【转】

    转载出处:http://www.cnblogs.com/Uncle-Keith/p/5943158.html 代码部分有小改动. 导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生 ...

  4. android 开发 - 对图片进行虚化(毛玻璃效果,模糊)

    概述 IPAD,IPHONE上首页背景的模糊效果是不是很好看,那么在 Android中如何实现呢.我通过一种方式实现了这样的效果. 开源库名称:anroid-image-blur 一个android ...

  5. 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果

    去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟 ...

  6. [转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时, ...

  7. 分针网—IT教育:使用CSS3制作导航条和毛玻璃效果

    导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生一些.简单的说,毛玻璃其实就是让图片或者背景使用相应的方法进行模糊处理.这种效果对用户来说是十分具有视觉冲击力的.本次分享的主题: ...

  8. CSS技巧收集——毛玻璃效果

    先上 demo和 源码 其实毛玻璃的模糊效果技术上比较简单,只是用到了 css 滤镜(filter)中的 blur 属性.但是要做一个好的毛玻璃效果,需要注意很多细节. 比如我们需要将上图中页面中间的 ...

  9. iOS开发探索-高斯模糊&毛玻璃效果

    iOS开发中有的时候需要将图片设置模糊,来实现特定的效果获取更好的用户体验, iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果,可以通过高斯模糊和毛玻璃效 ...

随机推荐

  1. 使用SqlDataReader和SqlDataAdapter的注意

    1.当SqlDataReader没有关闭之前,数据库连接会一直保持open状态,所以在使用SqlDataReader时,使用完毕应该马上调用SqlDataReader.Close()关闭它. 2.一个 ...

  2. 手机电脑Mac地址修改方法

    1.什么是Mac地址? MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址.硬件地址,用来定义网络设备的位置.在O ...

  3. golang的内置类型map的一些事

    golang的map类型是一个比较特殊的类型,不同于int, string, byte这样的基本类型,在经过一番探究之后得出了一些结论: 1.golang的map类型虽然是内置类型,但和基本类型有很大 ...

  4. LINQ 函数的实战演练测试

    1.首先定义一个图书类.专门存放图书的属性信息. 代码如下:   //Book.cs using System; namespace LinqTest { public class Book { pu ...

  5. React state的使用

    相对于angular.js的双向数据绑定,React 可以使用State来实现. React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM). this ...

  6. CPUID指令简单调用

    关于CPUID指令,可以看维基百科的相关介绍 https://en.wikipedia.org/wiki/CPUID 在windows下可以调用__cpuid和__cpuidex这两个函数,__cpu ...

  7. Ajax加载菊花loding效果

    Ajax 异步请求的时候,一般都会利用一个动态的 gif小图片来制作一个Ajax Loading ,以便增加用户体验. 这里我们使用Spin.js ,该 js 脚本压缩后5k,可以不用任何图片,任何外 ...

  8. js抛物线动画——加入购物车动效

    参考文章:http://www.zhangxinxu.com/wordpress/2013/12/javascript-js-元素-抛物线-运动-动画/ parapola.js /*! * by zh ...

  9. Android issues

    1. Android studio 2.0 Error:Exception in thread "main" java.lang.UnsupportedClassVersionEr ...

  10. XAML UserControl的继承

    欢迎访问Heroius博客:崩溃的脑壳查看文章原文! 前言 相信不少学习WPF和Silverlight的同学们都出于Winform的习惯,希望能够在新展示层框架中实现控件的继承.本文就是说明如何实现这 ...