TableViewCell背景颜色渐变

时间:2016-08-07 00:58:29

标签: ios uitableview

所以目前我正在使用TableViewController,但我希望它像每个单元格上的渐变表视图一样,如图所示

enter image description here

有没有什么好的方法可以根据我填充表格的数组的大小来实现这个目的?

1 个答案:

答案 0 :(得分:2)

如果您只想在两种颜色之间进行插值,则可以在每种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)

如果您的细胞计数发生变化,您当然希望重新计算每种颜色成分的步长。

游乐场的结果:

enter image description here