Цвет градиента iOS в ячейке представления коллекции

Я столкнулся с этой проблемой при настройке цвета градиента для просмотра в представлении коллекции.

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

viccalexander/Chameleon (https://github.com/viccalexander/Chameleon)

введите здесь описание изображения

введите здесь описание изображения


person ShrikantWalekar    schedule 30.10.2018    source источник
comment
Покажите соответствующий код, относящийся к конкретной проблеме. Ссылка на весь проект неплохая, но поместите в свой вопрос блок кода, который работает не так, как вы ожидаете. Будьте более конкретны и в самой проблеме.   -  person Smartcat    schedule 30.10.2018
comment
А также загрузить изображение, какой именно результат нужен?   -  person VDPurohit    schedule 30.10.2018
comment
Я предполагаю, что вы применяете градиент, когда размер ячейки еще не установлен. Когда он установлен, изменяет границы градиентного слоя на границы ячейки.   -  person Larme    schedule 30.10.2018


Ответы (1)


Попробуйте код ниже, может вам помочь

  extension UIView{
        func addGradientBackground(firstColor: UIColor, secondColor: UIColor){
            clipsToBounds = true
            let gradientLayer = CAGradientLayer()
            gradientLayer.colors = [firstColor.cgColor, secondColor.cgColor]
            gradientLayer.frame = self.bounds
            gradientLayer.startPoint = CGPoint(x: 0, y: 0)
            gradientLayer.endPoint = CGPoint(x: 0, y: 1)
            print(gradientLayer.frame)
            self.layer.insertSublayer(gradientLayer, at: 0)
        }
    }

А внутри вашей ячейки просто:

override func awakeFromNib() {
    super.awakeFromNib()
    DispatchQueue.main.async {
        self.addGradientBackground(firstColor: .green, secondColor: .blue)
    }
}

Добавьте эту строку только в файл Xib, в противном случае при перезагрузке ячейки будет добавлено несколько градиентов в ячейку self.addGradientBackground (firstColor: .green, secondColor: .blue)

Ссылка - Как сделать ячейки с градиентным фоном?

person Niki    schedule 30.10.2018
comment
То же самое происходит и с этим кодом, брат, после выбора нового я перезагружаю коллекцию, и это происходит - person ShrikantWalekar; 30.10.2018
comment
@ShrikantWalekar, не могли бы вы попробовать этот обновленный код. - person VDPurohit; 30.10.2018
comment
Можете выложить код, было бы проще понять проблему.! - person Niki; 30.10.2018
comment
DispatchQueue.main.async Работает брат, я пропустил это... спасибо - person ShrikantWalekar; 30.10.2018