在UIView上创建圆形图层的Swift蒙版

11

我正在尝试用Swift将一个正方形UIView用圆形CAShapeLayer进行遮罩。 我有以下内容:

    var snapFrame = self.snapButton.frame
    var innerFrame = CGRect(x: snapFrame.minX + 1, y: snapFrame.minY + 1, width: snapFrame.width - 2, height: snapFrame.height - 2)

    maskLayer = CAShapeLayer()
    var circlePath = UIBezierPath(roundedRect: innerFrame, cornerRadius: innerFrame.width)
    maskLayer.path = circlePath.CGPath
    maskLayer.fillColor = UIColor.clearColor().CGColor

    shutterOverlay = UIView()
    shutterOverlay.frame = innerFrame
    shutterOverlay.backgroundColor = BUBConstants.primaryColor_blue

    self.view.addSubview(shutterOverlay)
    self.view.layer.addSublayer(maskLayer)

    shutterOverlay.layer.mask = maskLayer
如果我注释掉最后两行代码,图层和视图都会出现在正确的位置和大小。但是加上最后一行会导致视图和图层都不显示。
另外,我需要以这种方式完成,因为我的最终目标是制作一个动画,其中正方形UIView填充圆形。我不能只显示圆形视图。
有人能指出我的错误所在吗?
1个回答

13
您需要将口罩添加到shutterOverlay中,像这样:

您需要将口罩添加到shutterOverlay中,像这样

shutterOverlay.layer.addSublayer(maskLayer)

而不是视图层的替代方案。

遮罩需要成为它要遮罩的图层的子图层。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接