Раньше у меня был этот код в методе tableView willDisplay cell
, но он не давал точного чередования цветов - он почти имел место, но иногда все же путался с 1 или 2, которые были одного цвета, и я не был уверен.
Я нашел кое-что, что предлагало вызывать все методы в методе awakeFromNib
в моем пользовательском классе UITableViewCell
, поэтому я переместил все так:
class SectionTableViewCell: UITableViewCell {
@IBOutlet weak var lblName: UILabel!
@IBOutlet weak var lblValue: UILabel!
var cellGradient_1: CAGradientLayer = CAGradientLayer()
var cellGradient_2: CAGradientLayer = CAGradientLayer()
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
self.layer.insertSublayer(cellGradient_1, at: 0)
self.layer.insertSublayer(cellGradient_2, at: 0)
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
override func layoutSubviews() {
super.layoutSubviews()
cellGradient_1.frame = self.bounds
cellGradient_2.frame = self.bounds
}
}
Теперь в моем tableView cellForRowAt
Iсделайте эту проверку:
let cell = tableView.dequeueReusableCell(withIdentifier: "Section", for: indexPath) as! SectionTableViewCell
if (indexPath.row%2 == 0) {
cell.cellGradient_1.colors = theme.childColor_1 //Some gradient color
}
else{
cell.cellGradient_2.colors = theme.childColor_2 //Some gradient color
}
Теперь все они первого цвета, а 1 рядом с нижним цветом является вторым цветом.Я что-то не так делаю с nib
?Есть ли другой способ установить цвета градиентов?Любая помощь будет принята с благодарностью.
Редактировать: Похоже, что она работает при начальной загрузке, но как только таблица перезагружается или происходит прокрутка, все градиенты ячейки изменяются на исходные, кроме 2 или 3.