ios - UIBezierPath 不能改变线条的颜色

标签 ios swift uicolor uibezierpath

这是我的代码

 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()
        }
    }

如您所见,我有自定义颜色。我的问题是颜色总是黑色。

enter image description here

 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.01.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 的值)以更清楚地看到颜色。

关于ios - UIBezierPath 不能改变线条的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769449/

相关文章:

ios - 我的字典是空的,尽管它有值

ios - 不理解 Swift 中的闭包示例

iOS:无法从 Range<CGFloat> 获取第一项值

objective-c - 背景 UIImage 成为 Zombie 委托(delegate)

ios - OpenGL和OSX Mavericks-错误包括OpenGL header

iphone - ios我可以从不同的线程观察者(NSNotificationCenter)

iPhone iOS 如何将 UIColor 序列化/保存到 JSON 文件?

swift - UIColor 可以同时使用深色和浅色模式颜色进行初始化吗?

ios - iOS 中的 self.timer = nil 与 [self.timer invalidate] 有什么区别?

ios - 传递 self 并在没有保留周期的闭包中返回它