最佳答案
如果您只是想在两种颜色之间进行插值,则可以在每个RGB颜色分量之间进行插值(也可以使用HSB进行此操作)。
定义开始颜色和结束颜色。我选择了一个元组表示形式:
typealias Color = (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
let startColor: Color = (red: 0.0/255, green: 114.0/255.0, blue: 96.0/255.0, alpha: 1.0)
let endColor: Color = (red: 10.0/255.0, green: 188.0/255.0, blue: 161.0/255.0, alpha: 1.0)
计算每个颜色分量的步数和步长:
var data = [/* ... */]
let steps = data.count > 1 ? CGFloat(data.count - 1) : 1.0
let rStep = (endColor.red - startColor.red) / steps,
gStep = (endColor.green - startColor.green) / steps,
bStep = (endColor.blue - startColor.blue) / steps,
aStep = (endColor.alpha - startColor.alpha) / steps
最后,在您的
cellForRowAtIndexPath
中:let rowIdx = CGFloat(indexPath.row)
myCell.backgroundColor = UIColor(red: startColor.red + rowIdx * rStep, green: startColor.green + rowIdx * gStep, blue: startColor.blue + rowIdx * bStep , alpha: startColor.alpha + rowIdx * aStep)
如果您的单元格计数发生了变化,您当然希望重新计算每个颜色分量的步长。
在操场上的结果:
关于ios - UITableViewCell背景色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809968/