0

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

当我更改单元格的背景时,它是这样的在此处输入图像描述

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

我想要实现的是: 在此处输入图像描述

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

当用户选择任何标签时,背景和文本颜色会改变。我不是为了实现这一点。这可能很容易做到,但不知何故我无法做到这一点。

4

2 回答 2

1

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

于 2018-11-27T14:05:52.007 回答
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])
    }
}

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

于 2018-11-27T14:12:49.477 回答