【iOS开发】快速生成高斯模糊效果背景

2019-04-11 16:18:28 浏览数 (3)

这篇文章是上一篇文章 http://www.jianshu.com/p/c9083a105921 的拓展,不罗嗦了,直接上代码。

代码语言:javascript复制
//创建毛玻璃效果的背景
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三个属性可以选,而不像之前可以任意设置高斯模糊的半径。

感谢:徐小雷同学的指导

0 人点赞