Swift 模糊效果局部挖空

这篇博客介绍了如何在Swift中创建局部模糊效果,并强调了理解代码原理的重要性,通过一个具体的ViewController示例来展示实现过程。

现实中经常会遇到如图需求:

请添加图片描述

代码如下:复制之余也要自己理解下原理,做到举一反三,深谙其道。

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    
    blurEffectAction()
}

func blurEffectAction() {
    let image = UIImageView(image: UIImage(named: "sexy"))
    image.frame = UIScreen.main.bounds
    //image.contentMode = .scaleAspectFit
    self.view.addSubview(image)
    
    //UIVisualEffectView--UIView类型,相当于在self.view上层又添加一个view
    let blurEffect = UIBlurEffect(style: .dark)
    let overlay = UIVisualEffectView(effect: blurEffect)
    overlay.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)

    //CAShapeLayer起渲染作用
    let maskLayer = CAShapeLayer()
    maskLayer.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
    maskLayer.fillColor = UIColor.black.cgColor
    maskLayer.fillRule = CAShapeLayerFillRule.evenOdd

    let radius: CGFloat = 100
    let rect = CGRect(x: overlay.frame.midX - radius, y: overlay.frame.midY - radius, width: 2 * radius, height: 2 * radius)

    //UIBezierPath绘出了裁减的范围区域
    let path = UIBezierPath(rect: overlay.bounds)
    path.append(UIBezierPath(ovalIn: rect))
    
    maskLayer.path = path.cgPath
    
    overlay.layer.mask = maskLayer
    
    self.view.addSubview(overlay)
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值