Как проверить и установить grediant view в swift?

Я хочу установить цвет градиента для фона при нажатии кнопки, следующий мой код, я получаю сбой на случай, если objGrediantView в качестве CAGradientLayer() в sender.subviews

Чтобы проверить, есть ли Grediant или нет

func setGrediantView(sender: AnyObject, topColor: UIColor, bottomColor: UIColor){

    for case let objGrediantView as CAGradientLayer() in sender.subviews {
        if objGrediantView {
            // show error
            return
        }
    }


    let colorTop =  topColor.cgColor
    let colorBottom = bottomColor.cgColor

    let gradientLayer = CAGradientLayer()
    gradientLayer.colors = [ colorTop, colorBottom]
    gradientLayer.locations = [ 0.0, 1.0]
    gradientLayer.frame = sender.bounds

    sender.layer.insertSublayer(gradientLayer, at: 0)

}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    print("You selected cell #\(indexPath.item)!")
    let dicData = items[indexPath.item]
  //  self.objProfileView.backgroundColor = UIColor.white
     self.setGrediantView(sender: objProfileView, topColor: (dicData["top"]!), bottomColor: (dicData["bottom"]!))
}

1 ответ

Решение

Перепишите текст следующим образом (ваш код не компилируется, мне действительно интересно, как вы к нему попали):

    for sublayer in (sender.layer.sublayers ?? []) {
        if sublayer is CAGradientLayer  {
            // show error
            return
        }
    }
Другие вопросы по тегам