在UIView中为给定的rect绘制一个圆形透明孔

时间:2018-01-08 00:42:43

标签: swift calayer mask

我正在尝试使用以下代码在我的UIview中创建一个圆形透明孔,并且此代码根据给定的rect生成正确的孔。在我的情况下,由于填充规则kCAFillRuleEvenOdd,因为填充规则kCAFillRuleEvenOdd,所以那些正在重叠并且没有在交叉矩形区域上获得透明孔的所有那些矩形的个体很少有重叠,所以它可以修改相同的代码所以它可以为个别作品和所有其他重叠的矩形工作,并在视图中创建透明孔?

let overlay = UIView(frame: CGRect(x: 0, y: 0, width: width,height: height))
overlay.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4)

// Create the path.
let path = UIBezierPath(rect: view.frame)
let maskLayer = CAShapeLayer()
maskLayer.frame = view.frame

for rectFrame in rects {
    // Create the frame for the circle.
    let rect = CGRect(x: rectFrame.origin.x, y: rectFrame.origin.y, width: 38, height: 38)

    // Append the circle to the path so that it is subtracted.
    path.append(UIBezierPath(ovalIn: rect))
}

maskLayer.fillRule = kCAFillRuleEvenOdd
maskLayer.path = path.cgPath

// Set the mask of the view.
view.layer.mask = maskLayer

self.overlayLayer.addSubview(overlay)

0 个答案:

没有答案