слой при нажатии кнопки - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть этот код, в котором я оставляю класс «ColorCell» для своей ячейки, после чего я хочу нажать на кнопку моей коллекции, я создал ul Layes вокруг (только выбранный), чтобы получить представление и знатькакой премо.код работает, отлаживая в функции, но не выполняя ее, он только запускает tapColor

        func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: ColorCell.cellId, for: indexPath) as! ColorCell
        if cell.isSelected {
            cell.locationImage.layer.borderWidth = 1
            cell.locationImage.layer.borderColor = UIColor.white.cgColor
            self.delegate?.tapColor(colorRound: datasource[indexPath.item].color)
        }
    }
    class ColorCell: UICollectionViewCell {
    static let reuseIdentifier = "TextColorRoundCell_RID"
    static let cellId = "ImageSliderCell__"
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupViews()
    }
    var cellID: String?
    var locationImage = UIImageView().then{
        $0.contentMode = UIView.ContentMode.scaleAspectFit
        $0.layer.cornerRadius = (((UIScreen.main.bounds.size.width/8)*0.8)/2)
//        $0.layer.borderWidth = 1
//        $0.layer.borderColor = UIColor.white.cgColor
    }

    func setupViews(){
        self.addSubview(self.locationImage)
        self.locationImage.activate([
            locationImage.widthAnchor.constraint(equalTo: self.widthAnchor, multiplier: 0.8),
            locationImage.heightAnchor.constraint(equalTo: self.locationImage.widthAnchor),
            locationImage.centerXAnchor.constraint(equalTo: self.centerXAnchor),
            locationImage.centerYAnchor.constraint(equalTo: self.centerYAnchor),
            ])
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

Пример

1 Ответ

0 голосов
/ 27 ноября 2018
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: ColorCell.cellId, for: indexPath) as! ColorCell
    if cell.isSelected {
        cell.locationImage.layer.borderWidth = 1
        cell.locationImage.layer.borderColor = UIColor.white.cgColor
        self.delegate?.tapColor(colorRound: datasource[indexPath.item].color)
    }



    for singleCell in collectionView.visibleCells {
        if singleCell != cell {
            singleCell.layer.borderWidth = 0
            singleCell.layer.borderColor = UIColor.clear
        }
    }
    collectionView.reloadData() 
}

Prova cosi, ci sarebbero un sacco di modi per risolvere ques problemma

РЕДАКТИРОВАТЬ 2

class ColorCell: UICollectionViewCell {
    //Qui dentro inserisci tutti i componenti della cella

    //var label: UILabel
    //var image: UIImage etc..

    override var isSelected: Bool {
        didSet{
            if isSelected {
            //QUI cambi i colori degli elementi
            } else {
            //QUI resetti i colori come erano all'inizio
            }
        }
    }
}
...