ios - UIView 上圆形层的 Swift 掩码

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

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

此外,我需要这样做,因为我的最终目标是制作一个方形 UIView 填满圆形的动画。我不能只显示圆形 View 。

谁能指出我哪里出错了?

最佳答案

您需要像这样将 mask 添加到 shutterOverlay

shutterOverlay.layer.addSublayer(maskLayer)

而不是 View 层。

mask 必须是它要 mask 的层的子层。

关于ios - UIView 上圆形层的 Swift 掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29173116/

相关文章:

ios - Swift 2.2,RealmSwift - 无法将类型 'Note' 的值转换为预期的参数类型 Object.Type

ios - 在 UIView 图像上添加 UIView。用户可以缩放图像

android - 如何知道文件和文件夹是否隐藏在文件中?

ios - 每次点击屏幕时都会调用 NSNotification

ios - 如何在滚动时隐藏 UIView?

ios - swift 在 ScrollView 内缩放 UIImageView

json - SwiftyJSON 问题 Swift 2

ios - 关于自动布局

iphone - 我可以知道ipad是否重新启动吗?

swift - 如何使用 Alamofire + RxSwift 同步刷新访问 token