我有一个收集视图单元格。我每个单元格都有一个视图。现在默认为id,我将视图的边框颜色设置为lightGray
。
因此,无论何时选择任何单元格,我都需要将视图边框颜色更改为红色。再一次,如果我选择其他任何新单元格。我的旧单元格视图应更改回lightGray
。新的单元格视图必须显示为redcolor
。
我该怎么做:
在我的手机中:
@IBOutlet var baseView: UIView! {
didSet {
baseView.layer.cornerRadius = 5
baseView.layer.borderWidth = 1.0
baseView.layer.borderColor = UIColor.lightGray.cgColor
}
}
let datt = [["duration": "No", "price": "Rs. 100", "perMonth": "per month"],
["duration": "12", "price": "Rs. 55.20", "perMonth": "per month"],
["duration": "No", "price": "Rs. 1300", "perMonth": "one time"]]
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "KMSubscriptionsCell", for: indexPath) as! KMSubscriptionsCell
let subcription = subscriptions[indexPath.item]
cell.durationLabel.text = datt["duration"]
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as! KMSubscriptionsCell
cell.baseView.layer.borderColor = Utils.colorCode.selectedBorderColor.cgColor
cell.baseView.layer.borderWidth = 2.0
}
我尝试了一些:
在我的行中:
if indexPath.item != indexPath.item {
cell.baseView.layer.borderWidth = 1.0
cell.baseView.layer.borderColor = UIColor.lightGray.cgColor
}
它不起作用。即使我添加了,也没有选择。没有运气。请帮帮我。我该怎么做到。
答案 0 :(得分:2)
一种简单的方法是在单元格类中使用属性观察器:
class CollectionViewCell: UICollectionViewCell {
override func awakeFromNib() {
super.awakeFromNib()
layer.borderWidth = 1
layer.borderColor = borderColor
}
override var isSelected: Bool {
didSet {
layer.borderColor = borderColor
}
}
private var borderColor: CGColor {
return isSelected ? UIColor.red.cgColor : UIColor.lightGray.cgColor
}
}
除了单元格本身之外,您还可以将边框应用于baseView
。