无法在UICollection视图中更改视图颜色

时间:2018-11-27 13:25:47

标签: ios swift uicollectionview uibackgroundcolor

我正在尝试更改uicollectionviewcell内部视图的颜色。但是我不能改变颜色。当我尝试将UIViewController连接到我们的视图控制器时,它说“无法将重复内容作为插座连接。”。

当我更改单元格的背景时,它像这样enter image description here

为了使其圆润,我正在使用视图并为其赋予图层半径属性。

我想要实现的是: enter image description here

这些值来自我创建的模型类,并将其分配给UIcolectionviewcell。模型仅包含一个显示标签的文本字段。

当用户选择任何标签时,背景和文本颜色都会改变。这可能很容易做到,但是以某种方式我无法实现。

2 个答案:

答案 0 :(得分:1)

尝试更改舍入元素而不是整个单元格的背景颜色 您可以创建自定义UICollectionViewCell并使用它来访问其中的不同项,例如带有标签的文本字段

答案 1 :(得分:1)

我已添加示例代码来满足您的要求,请参考并尝试根据以下代码进行实施:

//Your model class
class TagModel{

    var tag:String!
    var selected:Bool!

    init(tag:String, selected:Bool) {

        self.tag = tag
        self.selected = selected
    }
}

//your cell with Xib
class TagCell:UICollectionViewCell{

    @IBOutlet weak var tagLabel: UILabel!

    override func awakeFromNib() {

        super.awakeFromNib()
    }

    func setTag(_ tagModel:TagModel){

        tagLabel.layer.masksToBounds = true
        tagLabel.layer.cornerRadius = tagLabel.frame.size.height/2

        tagLabel.text = tagModel.tag

        if tagModel.selected{

            tagLabel.textColor = .white
            tagLabel.backgroundColor = .blue
        }else{

            tagLabel.textColor = .gray
            tagLabel.backgroundColor = .lightGray
        }
    }
}

//Your ViewController which has `UICollectionView`
class TagViewController:UIViewController, UICollectionViewDelegate, UICollectionViewDataSource{

    var tagModels:[TagModel]!

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        tagModels[indexPath.item].selected = !tagModels[indexPath.item].selected

        collectionView.reloadItems(at: [indexPath])
    }
}

注意:请将此代码作为示例,并根据您的实现进行修改。