Swift 镂空遮罩层的实现

本篇所实现的是拍照时候中间一个框,边上都是半透明黑色的效果。

关键

    let maskLayer = CAShapeLayer()
    maskLayer.fillRule = kCAFillRuleEvenOdd //奇偶层数显示规则

如果叠加的层是偶数个,则不显示叠加部分。如果是奇数个,则显示该区域内部。
所以在底层上面再叠一层L,L所覆盖的区域就会镂空。

步骤

1.创建一个镂空路径
2.创建CAShapeLayer 将镂空赋值给shapeLayer
3.将shapeLayer 设置为背景视图的Mask

代码

    // 不能直接加在最底层viewController.view上面,会黑掉 后面没东西显示了
    let backgroundView = UIView(frame: view.bounds)
    backgroundView.backgroundColor =  UIColor.init(red: 0, green: 0, blue: 0, alpha: 0.6)
    view.addSubview(backgroundView)

    let maskLayer = CAShapeLayer()
    maskLayer.fillRule = kCAFillRuleEvenOdd //  奇偶层显示规则
    
    let basicPath = UIBezierPath(rect: view.frame) // 底层

    let maskPath = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 35, height: 35)) 
    let maskPath = UIBezierPath(rect: aShape.frame) //自定义的遮罩图形
    basicPath.append(maskPath) // 重叠
    
    maskLayer.path = basicPath.cgPath
    backgroundView.layer.mask = maskLayer
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,240评论 2 33
  • 全文解析圆形Image组件的实现原理,取关键代码介绍算法细节,源码已经上传Github下载地址,欢迎下载试用。 一...
    立航阅读 4,284评论 3 33
  • 2017世界物联网博览会 中国无锡人才智力交流大会 时间:2017年9月13日上午8:30-12:00 地点:无锡...
    无锡就业阅读 428评论 0 0
  • 写在前面:培训的时候,学员总是面对着一整页乱码似的长得一样的字体,还要从中获取诸如“施工组织设计有哪些内容”,“国...
    踏着朝阳阅读 424评论 4 1
  • 孔子周游路过匡城时,匡城人把他误认为阳虎,大概因为孔子跟阳虎外貌有点像。阳虎曾经残害过匡城人,所以匡城人把孔子和跟...
    俊得艺手阅读 201评论 0 0