使用 CoreGraphics 绘制颜色 picker/wheel 在颜色之间创建黑线

Drawing color picker/wheel with CoreGraphics creates black lines between colors

下面的 Swift 创建颜色 picker/wheeler。大部分都可以,但如附件所示,不同色带之间有黑条。

调整设备比例没有帮助。

有什么想法吗?

// Constants
let Saturation = CGFloat(0.88)
let Brightness = CGFloat(0.88)
let MaxHueValues = 360
let Hues = (0...359).map { [=11=] }

override func drawRect(rect: CGRect) {
    // Set context & adapt to screen resolution
    let context = UIGraphicsGetCurrentContext()
    //let scale = UIScreen.mainScreen().scale
    //CGContextScaleCTM(context, scale, scale)

    // Get height for each row
    rowHeight = frame.height / CGFloat(Hues.count)

    // Draw one hue per row
    for hue in Hues {
        let hueValue = CGFloat(hue) / CGFloat(MaxHueValues)
        let color = UIColor(hue: hueValue, saturation: Saturation, brightness: Brightness, alpha: 1.0)
        CGContextSetFillColorWithColor(context, color.CGColor)
        let yPos = CGFloat(hue) * rowHeight
        CGContextFillRect(context, CGRect(x: 0, y: yPos, width: frame.width, height: rowHeight))
    }
}

可能是舍入误差。如果您的 y 位置和高度值不是整数,那么系统将尝试对您的绘图进行插值以模拟子像素渲染,但它确实不能。尝试调整你的框架,使其成为色调数量的偶数倍(所以如果有 360 色调,让你的框架高 360 点,或 720 点。)