使用CoreGraphics绘制颜色选择器/滚轮会在颜色

时间:2016-01-29 00:16:05

标签: ios swift core-graphics uigraphicscontext

下面的Swift创建了一个颜色选择器/轮车。它主要起作用,但不同色带之间有黑条,如附件所示。

调整设备比例没有帮助。

有什么想法吗?

enter image description here

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

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

1 个答案:

答案 0 :(得分:1)

这可能是错误的四舍五入。如果您的y位置和高度值不是整数,那么系统将尝试插值您的绘图以模拟子像素渲染,它实际上不能。尝试调整你的帧,使其成为色调数量的偶数倍(因此,如果有360度色调,请使你的帧高360点或720点。)