Reputation: 521
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
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
Upvotes: 8
Views: 7125
Reputation: 184
Be mindful that CAShapeLayer
has a property called fillColor
which by default is black.
If you want it to be clear just make it nil.
let layer = CAShapeLayer()
let linePath = UIBezierPath()
linePath.move(to: .init(x: .zero, y: bounds.height))
linePath.addLine(to: .init(x: bounds.width, y: bounds.height))
linePath.addLine(to: .init(x: bounds.width, y: .zero))
layer.path = linePath.cgPath
layer.strokeColor = UIColor.grey.cgColor
layer.fillColor = nil // here
layer.lineWidth = 1
Upvotes: 0
Reputation: 4941
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.
Upvotes: 16
Reputation: 11
try this:
let context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor);
Upvotes: 1