【问题标题】:layer when tap button点击按钮时的图层
【发布时间】:2018-11-27 11:50:57
【问题描述】:

我有这段代码,其中我将“ColorCell”类留给了我的单元格,之后我想点击我的收藏品的一个按钮,我创建了 ul 层(只有选定的层)以获得一个想法并知道哪个premo。代码工作,在函数内调试但不执行它,它只运行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")
    }
}

Example

【问题讨论】:

  • "得到一个想法并知道哪个 premo。"你用过谷歌翻译吗?哈哈哈无论如何,如果您想为单元格内的按钮提供特定功能,您应该使用该按钮并向其添加一个目标,例如“button.addTarget(self, #selector(yourFunction:), sender: nil)” 现在当你点击一个单元格时,它会触发函数“didSelectItemAt”并且只有函数 tapColor 被调用
  • @FrancescoDestino 好的。那么我应该像使用 tapColor 一样创建一个函数吗?并简单地声明创建图层?但是,这种方式不会为所有按钮创建它吗?
  • 我试图理解你的问题:你希望你的单元格内的按钮可以执行一个动作,对吧?!或者,也许您正在谈论将按钮作为您的单元格?
  • @FrancescoDestino ho una 10 di button all'interno della collection, che dichiaro con unico arrey, vorrei che quando premo su uno mi si crei un layer attorno。在 modo che so che ho selezionato quello
  • Quindi a quanto ho capito non vengono eseguiti queste due righe cell.locationImage.layer.borderWidth = 1 cell.locationImage.layer.borderColor = UIColor.white.cgColor Giusto?

标签: ios iphone swift layer


【解决方案1】:
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 questo questiona

编辑 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
            }
        }
    }
}

【讨论】:

  • 娱乐!! alla grande,l'unica cosa,ho tolto il reloadData... il realtà basta così。 con il reload non so perché ma veniva selezionato il coloro dopo :) Grazie mille ancora !!
  • 哦 allora devo aver sbagliato io con quel comando :) Comunque sono contento di averti aiutato ;)
  • Possibile perchè viene richiamato già nel viewDidLoad? :) comunque grazie davvero tra l'altro sono di Torino anche io ahah
  • Nono perché il reloadData dovrebbe essere utilizzato per altro e non per quello
  • stavo cercando di ridtere la stessa cosa per la Collection sotto al colore, per i 字体。 cliccando dovrei visualizzare la scritta in bianco (per quella selezionata) però me la tiene in memoria
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多