我正在尝试更改uicollectionviewcell内部视图的颜色。但是我不能改变颜色。当我尝试将UIViewController连接到我们的视图控制器时,它说“无法将重复内容作为插座连接。”。
为了使其圆润,我正在使用视图并为其赋予图层半径属性。
这些值来自我创建的模型类,并将其分配给UIcolectionviewcell。模型仅包含一个显示标签的文本字段。
当用户选择任何标签时,背景和文本颜色都会改变。这可能很容易做到,但是以某种方式我无法实现。
答案 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])
}
}
注意:请将此代码作为示例,并根据您的实现进行修改。