UIView上的圆圈层的Swift蒙版

lbr*_*anl 9 ios swift

我试图用swift中的圆形CAShapeLayer掩盖方形UIView.我有以下内容:

    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
Run Code Online (Sandbox Code Playgroud)

如果我注释掉最后两行,则图层和视图都会显示在正确的位置和正确的大小.但是,添加最后一行会导致视图和图层都不显示.

此外,我需要这样做,因为我的最终目标是制作一个动画,其中方形UIView填充圆圈.我不能只显示一个圆形视图.

谁能指出我哪里出错了?

Tho*_*cic 12

你需要像这样将面具添加到shutterOverlay

shutterOverlay.layer.addSublayer(maskLayer)
Run Code Online (Sandbox Code Playgroud)

而不是视图的图层.

掩码需要是它想要掩盖的层的子层.