How do I create a UIView with a transparent circle inside (in swift)?

前端 未结 4 1404
一生所求
一生所求 2020-12-12 20:30

I want to create a view that looks like this: \"Goal

I figure what I need is a uiview with some sort of

4条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-12 20:55

    For Swift 3, here is rakeshbs' answer formatted so it returns the UIView needed:

    func createOverlay(frame : CGRect, xOffset: CGFloat, yOffset: CGFloat, radius: CGFloat) -> UIView
    {
        let overlayView = UIView(frame: frame)
        overlayView.alpha = 0.6
        overlayView.backgroundColor = UIColor.black
    
        // Create a path with the rectangle in it.
        let path = CGMutablePath()
        path.addArc(center: CGPoint(x: xOffset, y: yOffset), radius: radius, startAngle: 0.0, endAngle: 2 * 3.14, clockwise: false)
        path.addRect(CGRect(x: 0, y: 0, width: overlayView.frame.width, height: overlayView.frame.height))
    
        let maskLayer = CAShapeLayer()
        maskLayer.backgroundColor = UIColor.black.cgColor
        maskLayer.path = path;
        maskLayer.fillRule = kCAFillRuleEvenOdd
    
        // Release the path since it's not covered by ARC.
        overlayView.layer.mask = maskLayer
        overlayView.clipsToBounds = true
    
        return overlayView
    }
    

提交回复
热议问题