【发布时间】:2015-04-08 00:09:26
【问题描述】:
stackoverflow 上的第一篇文章,首先,你好!
我是第一次尝试 Swift 并且正在处理一个项目,只是需要一些帮助来解决我遇到的问题。我有一个使用 UIBezierPath 的圆圈,我想动态地改变它的颜色。但是,当我尝试对颜色进行“硬编码”时,我无法让它改变。我试过看这里:How to change the color of a UIBezierPath in Swift?,但它没有回答我的问题。但是,我确实看到那里的一个答案确实表明贝塞尔路径没有颜色。如果是这样,那么我将如何改变沿其路径的圆圈的颜色?
这是我正在使用的代码:
outerCircle.path = UIBezierPath(ovalInRect: CGRect(x: 0.0, y: 0.0, width: frameSize.width, height: frameSize.height)).CGPath
outerCircle.lineWidth = 8.0
outerCircle.strokeStart = 0.0
outerCircle.strokeEnd = 0.45
outerCircle.lineCap = kCALineCapRound
outerCircle.fillColor = UIColor.clearColor().CGColor
outerCircle.strokeColor = UIColor.grayColor().CGColor
outerCircleView.layer.addSublayer(outerCircle)
outerCircle.strokeStart = 0.0
outerCircle.strokeEnd = 1.0
vibrancyView.contentView.addSubview(outerCircleView)
innerCircleView.frame.size = frameSize
let innerCirclePadding: CGFloat = 12
innerCircle.path = UIBezierPath(ovalInRect: CGRect(x: innerCirclePadding, y: innerCirclePadding, width: frameSize.width - 2*innerCirclePadding, height: frameSize.height - 2*innerCirclePadding)).CGPath
innerCircle.lineWidth = 4.0
innerCircle.strokeStart = 0.5
innerCircle.strokeEnd = 0.9
innerCircle.lineCap = kCALineCapRound
innerCircle.fillColor = UIColor.clearColor().CGColor
innerCircle.strokeColor = UIColor.grayColor().CGColor
innerCircleView.layer.addSublayer(innerCircle)
再次,如果这是一个明显的答案或已经回答,我深表歉意。我感谢任何可以帮助我指明正确方向的建议。谢谢。
更新:这就是我尝试做的。我把内圈和外圈的填充和描边颜色都改成了绿色,但还是有清晰的圆圈:
outerCircle.path = UIBezierPath(ovalInRect: CGRect(x: 0.0, y: 0.0, width: frameSize.width, height: frameSize.height)).CGPath
outerCircle.lineWidth = 8.0
outerCircle.strokeStart = 0.0
outerCircle.strokeEnd = 0.45
outerCircle.lineCap = kCALineCapRound
outerCircle.fillColor = UIColor.greenColor().CGColor
outerCircle.strokeColor = UIColor.greenColor().CGColor
outerCircleView.layer.addSublayer(outerCircle)
outerCircle.strokeStart = 0.0
outerCircle.strokeEnd = 1.0
vibrancyView.contentView.addSubview(outerCircleView)
innerCircleView.frame.size = frameSize
let innerCirclePadding: CGFloat = 12
innerCircle.path = UIBezierPath(ovalInRect: CGRect(x: innerCirclePadding, y: innerCirclePadding, width: frameSize.width - 2*innerCirclePadding, height: frameSize.height - 2*innerCirclePadding)).CGPath
innerCircle.lineWidth = 4.0
innerCircle.strokeStart = 0.5
innerCircle.strokeEnd = 0.9
innerCircle.lineCap = kCALineCapRound
innerCircle.fillColor = UIColor.greenColor().CGColor
innerCircle.strokeColor = UIColor.greenColor().CGColor
innerCircleView.layer.addSublayer(innerCircle)
我想让圆圈改变颜色。
【问题讨论】:
-
那些将是外圈和内圈的操作。知道了。谢谢!正是我正在寻找的指导。我试图改变 fillColor 和 strokeColor,但我需要使用这两个函数。谢谢!正是我想要的。出于好奇,如果您不介意解释,那么上面的代码中的fillColor和strokeColor是做什么的?
-
innerCircle和outerCircle是什么?他们是否有机会塑造图层?如果是这样,您不认为在您的问题中提及这一事实可能是个好主意吗? -
好的,就目前而言,您所做的是正确的。那有什么问题吗?显示更多您的代码。充分展示其他人可以运行您的代码。并且解释问题是什么——运行代码时发生了什么,另一方面,你希望发生什么?
-
我要做的是编辑innerCircle和outerCircle的颜色。尝试手动更改 fillColor 和 strokeColor 元素对我不起作用。我必须改用 setStroke 和 setFill 吗?
-
“对我不起作用”是什么意思?我可以看到您正在设置他们的
fillColor和strokeColor属性。这是正确的,并且有效。我再次问,问题是什么?
标签: ios iphone swift uibezierpath