import UIKit
class YourCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView! // for example - some UI element inside cell ...
override var isSelected: Bool {
didSet {
self.contentView.backgroundColor = isSelected ? UIColor.blue : UIColor.yellow
self.imageView.alpha = isSelected ? 0.75 : 1.0
}
}
}
// and below you will have your original code
class YourViewController: UICollectionViewController {
... etc
回答您的问题-对于第一个单元格的特殊样式:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell ...
if(indexPath.row == 0) { //for first cell in the collection
cell.backgroundColor = UIColor.orange
} else {
cell.backgroundColor = UIColor.green
}
@IBOutlet weak var cellImageview: UIImageView!
var cellIndex: Int? {
didSet {
guard let index = cellIndex else { return }
if index != 0 {
contentView.backgroundColor = UIColor.blueColor()//change this to your unselected cell color.
}else{
contentView.backgroundColor = UIColor.redColor()//this is default color for your first cell.
cellImageview.alpha = 1.0
}
}
}
override var selected: Bool {
didSet {
contentView.backgroundColor = selected ? UIColor.redColor(): UIColor.blueColor()//change colors as per your requirements
cellImageview.alpha = selected ? 0.75 : 1.0
}
}
7条答案
按热度按时间wwtsj6pe1#
对于基于单元格选定状态的两种不同颜色,您可能需要将UICollectionViewCell子类化如下:
回答您的问题-对于第一个单元格的特殊样式:
yvfmudvl2#
这是我的代码为这个问题。希望它保存时间为您:)
slmsl1lt3#
调用选择项在索引路径:动画:滚动位置:UICollectionView的reloadData方法之后的方法
例如:
34gzjxbg4#
根据@pedroun的回答,这里是我更新的答案,让你的第一个单元格的默认颜色。希望这对你有帮助。
对于
cellIndex
属性,需要在cellForRowAtIndexPath
中将其设置为cell.cellIndex = indexPath.row
0x6upsns5#
UICollectionViewDelegate中有两个委托方法。
did取消选择索引路径上的项目并did选择索引路径上的项目
点击集合单元格时,可以得到该单元格的indexPath,也可以通过cellForItemAtIndexPath得到集合单元格
我在UITableView中有过经验,我认为UICollectionView与以下逻辑相同。
csbfibhn6#
我知道这不是个完美的解决方案。但它确实有效。
ohtdti5x7#
我的建议是在单元格加载时在
view controller
中添加以下行(即在didLoad
或willAppear
中添加)。然后在UICollectionViewCell类中添加以下方法: