Search code examples
iosswiftuibezierpath

How to change UIBezierPath background color?


I have added these lines of code:

    var radius: CGFloat = UIScreen.mainScreen().bounds.width - 60
    let path: UIBezierPath = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: UIScreen.mainScreen().bounds.height), cornerRadius: 0)

    let circlePath: UIBezierPath = UIBezierPath(roundedRect: CGRect(x: 30, y: (UIScreen.mainScreen().bounds.height - radius) / 2 - (navigationController?.navigationBar.frame.height)!, width: radius, height: radius), cornerRadius: radius)

    path.appendPath(circlePath)

but it gives me this result

enter image description here

How can I make my circle background color - clearColor() ?

I tried this one:

UIColor.whiteColor().setFill()
circlePath.fill()

But it did not make any sense


Solution

  • Try this:

    let radius: CGFloat = 50
    let path: UIBezierPath = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 50, height: 50), cornerRadius: 0)
    
    let circlePath: UIBezierPath = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: radius, height: radius), cornerRadius: radius)
    
    path.append(circlePath)
    
    let fillLayer = CAShapeLayer()
    fillLayer.path = path.cgPath
    fillLayer.fillColor = UIColor.red.cgColor
    yourView.layer.addSublayer(fillLayer)
    

    Paths do not have color; layers have color.

    You need to create a layer based on a path, and add it to the layer of your view as shown in the code above.