У меня есть градиентный фон для моей ячейки представления коллекции, и каждый градиент отличается в зависимости от того, какой тег является ячейкой (например, Рождество - фиолетовый градиент, день рождения - зеленый градиент), однако при прокрутке представления коллекции градиенты сохраняются.на смену клеток.Есть ли способ исправить это?
это код, который я использую, чтобы установить градиент для фона.это в cellForItemAt
cell.mainView.setGradientBackground(colours: self.getColourFromTag(tag: self.lists[indexPath.item].tag))
.setGradientBackground
- расширение UIView, которое просто устанавливает градиент для фона.показано здесь:
func setGradientBackground(colours: [CGColor]) {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = bounds
gradientLayer.colors = colours
gradientLayer.locations = [0.0, 1.0]
gradientLayer.startPoint = CGPoint(x: 1.0, y: 1.0)
gradientLayer.endPoint = CGPoint(x: 0.0, y: 0.0)
layer.insertSublayer(gradientLayer, at: 0)
}
Я использую метод ниже, чтобы получить, какие цвета в градиенте
func getColourFromTag(tag: String) -> [CGColor] {
if tag == "Christmas" {
return [Colours.gradients.festive.start.cgColor, Colours.gradients.festive.end.cgColor]
}else if tag == "Birthday" {
return [Colours.gradients.lime.start.cgColor, Colours.gradients.lime.end.cgColor]
}else if tag == "Valentines Day" {
return [Colours.gradients.strawberry.start.cgColor, Colours.gradients.strawberry.end.cgColor]
}else if tag == "Charity" {
return [Colours.gradients.blueberry.start.cgColor, Colours.gradients.blueberry.end.cgColor]
}else if tag == "Event" {
return [Colours.gradients.fire.start.cgColor, Colours.gradients.fire.end.cgColor]
}else{
return [Colours.gradients.midnight.start.cgColor, Colours.gradients.midnight.end.cgColor]
}
}
Я попытался добавить каждый [цвет] в массив, а затем поместить его в.setGradientBackground
в indexPath.item
примерно так:
var colours = [[CGColor]]()
colours[indexPath.item] = self.getColourFromTag(tag: self.lists[indexPath.item].tag)
cell.mainView.setGradientBackground(colours: colours[indexPath.item])
, однако, это не работает, так как находится вне диапазона.у кого-нибудь есть решение?спасибо.