ios 如何改变UIBezierPath的背景颜色?

ax6ht2ek  于 2023-03-20  发布在  iOS
关注(0)|答案(3)|浏览(207)

我添加了以下代码行:

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)

但它给了我这个结果

我如何让我的圆圈背景色- clearColor()?
我试过这个:

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

但这没有任何意义

omtl5h9j

omtl5h9j1#

试试这个:

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)

路径没有颜色;层具有颜色。
您需要基于路径创建一个层,并将其添加到视图的层中,如上面的代码所示。

k10s72fa

k10s72fa2#

试试这个:

let context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor);
gmxoilav

gmxoilav3#

请注意,CAShapeLayer有一个名为fillColor的属性,默认情况下为黑色。
如果你想让它清楚,就把它变成零。

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

相关问题