2016-01-04 5 views
7

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

Это мой код в быстрой

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) 

} 

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

Любое предложение? Спасибо

ответ

5

Вместо использования 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)    
} 
+0

Это сделали это, но текст ячейки по-прежнему отсутствует , Любое предложение? спасибо – sin90

+0

Это сделало работу Спасибо! – sin90

Смежные вопросы