UIView上的圆圈层的Swift蒙版

时间:2015-03-20 18:09:19

标签: 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

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

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

有人能指出我出错的地方吗?

1 个答案:

答案 0 :(得分:12)

你需要像这样

将面具添加到shutterOverlay
shutterOverlay.layer.addSublayer(maskLayer)

而不是视图的图层。

掩码需要是它想要掩盖的图层的子图层。