我设法在使用此代码轻触时设置单元格背景颜色:
- (void) collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath: (NSIndexPath *)indexPath
{
NSLog(@"highlighted cell at index path %ld", (long)indexPath.row);
UICollectionViewCell* cell = [collectionView cellForItemAtIndexPath:indexPath];
cell.contentView.backgroundColor = [UIColor blueColor];
}
然后我有2个问题
1:我在视图中显示6个单元格,但随后我滑动显示其他单元格,其中一些单元格也以蓝色背景突出显示
2:在我选择单元格A并将背景颜色更改为蓝色后,当我选择B时,A中的背景颜色不会变回白色,我怎么能改回来?
谢谢!
答案 0 :(得分:0)
您需要在collectionView:cellForItemAtIndexPath:
方法中正确重置单元格。
if (/* cell is highlighted */) {
cell.contentView.backgroundColor = [UIColor blueColor];
} else {
cell.contentView.backgroundColor = [UIColor whiteColor]; // use whatever is appropriate
}
这当然要求您跟踪应突出显示的单元格。
答案 1 :(得分:0)
如果您只需要在手指触摸单元格时将单元格突出显示为蓝色背景,则可以在didUnhighlightItemAtIndexPath
中将颜色更改回白色。
- (void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"unhighlighted cell at index path %ld", (long)indexPath.row);
UICollectionViewCell* cell = [collectionView cellForItemAtIndexPath:indexPath];
cell.contentView.backgroundColor = [UIColor whiteColor];
}
这使得其他单元格不会以相同的背景颜色回收(问题1),并且在敲击单元格B之前,单元格A在抬起手指后立即返回默认颜色(问题2)。
有关详细信息,请参阅this question and its answers。