UIBezierPath 不能改变线条的颜色
UIBezierPath can't change the color of the line
这是我的代码
func drawSmallCircles(){
for oneArray in points {
let startAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[0]))
let endAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[1]))
let radius: CGFloat = 100.0
let path = UIBezierPath(arcCenter: center,
radius: radius,
startAngle: startAngleRadiant,
endAngle: endAngleRadiant,
clockwise: true)
let color = UIColor(red: CGFloat(55), green: CGFloat(37), blue: CGFloat(23), alpha: CGFloat(1))
path.fill()
color.setFill()
path.lineWidth = CGFloat(10)
path.stroke()
setNeedsDisplay()
}
}
如您所见,我有自定义颜色。我的问题是颜色总是黑色。
见
override func drawRect(rect: CGRect) {
self.opaque = false;
drawSmallCircles()
}
这是我的 drawRec
更新1
在 Rob 回答后,这是我的代码
let points = [[270, 290],[300, 320],[330, 350],[0, 20],[30, 50],[60, 80],[90, 110],[120, 140],[150, 170],[180, 200],[210, 230],[240, 260]]
func drawSmallCircles(){
for oneArray in points {
let startAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[0]))
let endAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[1]))
let radius: CGFloat = 50.0
let path = UIBezierPath(arcCenter: CGPoint(x: CGFloat(100), y: CGFloat(100)),
radius: radius,
startAngle: startAngleRadiant,
endAngle: endAngleRadiant,
clockwise: true)
let color = UIColor(red: CGFloat(55/255), green: CGFloat(37/255), blue: CGFloat(23/255), alpha: CGFloat(1))
// path.fill()
color.setStroke()
path.lineWidth = CGFloat(10)
path.stroke()
// setNeedsDisplay()
}
}
override func drawRect(rect: CGRect) {
self.opaque = false;
drawSmallCircles()
}
但还是一样的黑色,
我按照你说的做了,我在颜色上调用了 setStock 方法,我将颜色值更改为 255 之间的 0
如果您参考 initWithRed:green:blue:alpha:
的文档,它会指出这些值应该介于 0.0
和 1.0
之间。
此外,您永远不会调用 setStroke
来设置线条颜色。您调用 color.setStroke()
设置颜色,然后调用 path.stroke()
以先前指定的颜色绘制笔划。
--
您可能想要这样的东西:
func drawSmallCircles(){
for oneArray in points {
let startAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[0]))
let endAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[1]))
let radius: CGFloat = 100.0
let path = UIBezierPath(arcCenter: center, radius: radius, startAngle: startAngleRadiant, endAngle: endAngleRadiant, clockwise: true)
let color = UIColor(red: 55.0/255.0, green: 37.0/255.0, blue: 23.0/255.0, alpha: 1.0)
color.setStroke()
path.lineWidth = CGFloat(10)
path.stroke()
}
}
请注意,这是一种很深的颜色,所以它看起来可能是黑色的。您可能想要调亮它(使用一些接近 1.0
的值)以更清楚地看到颜色。
这是我的代码
func drawSmallCircles(){
for oneArray in points {
let startAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[0]))
let endAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[1]))
let radius: CGFloat = 100.0
let path = UIBezierPath(arcCenter: center,
radius: radius,
startAngle: startAngleRadiant,
endAngle: endAngleRadiant,
clockwise: true)
let color = UIColor(red: CGFloat(55), green: CGFloat(37), blue: CGFloat(23), alpha: CGFloat(1))
path.fill()
color.setFill()
path.lineWidth = CGFloat(10)
path.stroke()
setNeedsDisplay()
}
}
如您所见,我有自定义颜色。我的问题是颜色总是黑色。
见
override func drawRect(rect: CGRect) {
self.opaque = false;
drawSmallCircles()
}
这是我的 drawRec
更新1
在 Rob 回答后,这是我的代码
let points = [[270, 290],[300, 320],[330, 350],[0, 20],[30, 50],[60, 80],[90, 110],[120, 140],[150, 170],[180, 200],[210, 230],[240, 260]]
func drawSmallCircles(){
for oneArray in points {
let startAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[0]))
let endAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[1]))
let radius: CGFloat = 50.0
let path = UIBezierPath(arcCenter: CGPoint(x: CGFloat(100), y: CGFloat(100)),
radius: radius,
startAngle: startAngleRadiant,
endAngle: endAngleRadiant,
clockwise: true)
let color = UIColor(red: CGFloat(55/255), green: CGFloat(37/255), blue: CGFloat(23/255), alpha: CGFloat(1))
// path.fill()
color.setStroke()
path.lineWidth = CGFloat(10)
path.stroke()
// setNeedsDisplay()
}
}
override func drawRect(rect: CGRect) {
self.opaque = false;
drawSmallCircles()
}
但还是一样的黑色,
我按照你说的做了,我在颜色上调用了 setStock 方法,我将颜色值更改为 255 之间的 0
如果您参考 initWithRed:green:blue:alpha:
的文档,它会指出这些值应该介于 0.0
和 1.0
之间。
此外,您永远不会调用 setStroke
来设置线条颜色。您调用 color.setStroke()
设置颜色,然后调用 path.stroke()
以先前指定的颜色绘制笔划。
--
您可能想要这样的东西:
func drawSmallCircles(){
for oneArray in points {
let startAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[0]))
let endAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[1]))
let radius: CGFloat = 100.0
let path = UIBezierPath(arcCenter: center, radius: radius, startAngle: startAngleRadiant, endAngle: endAngleRadiant, clockwise: true)
let color = UIColor(red: 55.0/255.0, green: 37.0/255.0, blue: 23.0/255.0, alpha: 1.0)
color.setStroke()
path.lineWidth = CGFloat(10)
path.stroke()
}
}
请注意,这是一种很深的颜色,所以它看起来可能是黑色的。您可能想要调亮它(使用一些接近 1.0
的值)以更清楚地看到颜色。