我正在尝试用一个圆形的 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/