使用 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 点。)
下面的 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 点。)