установить горизонтальный градиент в UITableViewCell swift

Я хочу создать горизонтальный градиент слева направо на каждой ячейке Я использую CAGradientLayey для создания пользовательского слоя и добавления этого слоя в ячейку tableview

Это мой код в swift

  func gradient(frame:CGRect) -> CAGradientLayer {
    let layer = CAGradientLayer()
    layer.frame = frame
    print(frame)
    layer.startPoint = CGPointMake(0,0.5)
    layer.endPoint = CGPointMake(1,0.5)
    layer.colors = [ UIColor.redColor().CGColor,UIColor.blueColor().CGColor]
    return layer
}

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath) {
        cell.layer.addSublayer(gradient(cell.frame))
           cell.textLabel?.textColor = UIColor(red:0, green:0.102, blue: 0.2, alpha: 1)

}

но градиент не покрывает всю ячейку tableview, он переключается между ячейкой градиента и нормальным цветом фона ячейки, и кажется, что градиент полностью накладывает текст ячейки. Я не знаю, что я делаю неправильно

любое предложение? Благодарить вы

1 ответов


вместо frame используйте bounds ячейки, а также insertSublayer в индексе 0, поэтому он будет позади всех других слоев, включая ваш ярлык

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath) {
        cell.layer.insertSublayer(gradient(cell.bounds), atIndex:0)
        cell.backgroundColor = UIColor.clearColor()
        cell.textLabel?.textColor = UIColor(red:0, green:0.102, blue: 0.2, alpha: 1)            
}