下面的Swift创建了一个颜色选择器/轮车。它主要起作用,但不同色带之间有黑条,如附件所示。
调整设备比例没有帮助。
有什么想法吗?
// 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))
}
}
答案 0 :(得分:1)
这可能是错误的四舍五入。如果您的y位置和高度值不是整数,那么系统将尝试插值您的绘图以模拟子像素渲染,它实际上不能。尝试调整你的帧,使其成为色调数量的偶数倍(因此,如果有360度色调,请使你的帧高360点或720点。)