这篇文章是上一篇文章 //www.greatytc.com/p/c9083a105921 的拓展,不罗嗦了,直接上代码。
//创建毛玻璃效果的背景
func createFrostBackground (img:UIImage,view:UIView) {
let w = self.view.frame.width
let h = self.view.frame.height
let blurImageView = UIImageView(frame: CGRectMake(-w/2, -h/2, 2*w, 2*h)) //模糊背景是界面的4倍大小
blurImageView.contentMode = UIViewContentMode.ScaleAspectFill
blurImageView.image = img
//创建毛玻璃效果层
let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.Light)) as UIVisualEffectView
visualEffectView.frame = blurImageView.frame
//添加毛玻璃效果层
blurImageView.addSubview(visualEffectView)
self.view.insertSubview(blurImageView, belowSubview: view)
}
这个 Swift 函数可以帮你创造出一个带模糊效果的背景。
思路和上一篇大体是一样的,传入一个img参数作为背景图片,模糊处理后作为一个imageView插入在传入的view参数这个UIView的下方。
但是真正做了模糊处理的只有下面这一句
let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.Light)) as UIVisualEffectView
本质是其实是把你传入的Image,放到ImageView里面,再给ImageView加一个有模糊特性的SubView,让它看起来很模糊,并没有真正地处理原图。
相比上一篇文章中的方法,
【优点】:性能提升好几倍,毕竟只是加了一层View,而没有真正意义的图片处理。
【缺点】:UIBlurEffectStyle只有Light、Dark、ExtraLight三个属性可以选,而不像之前可以任意设置高斯模糊的半径。
感谢:徐小雷同学的指导