UICollectionView点击效果-松开手选中颜色消失

当我们使用集合视图UITableView、UICollectionView时,往往需要给UITableViewCell 、UICollectionViewCell的点击事件加一个跟UIButton一样的高亮效果,否则用户会觉得其实自己压根没点中一样,这样无形之中便降低了用户体验。

像这种效果:

highlight.gif

UITableView

先说UITableView,我们应该有遇到过,在点击cell得时候,默认会有一个选中状态的背景颜色,一般是灰色的,当我们松开手选中颜色会立即消失

代码如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // 松开手选中颜色消失
    [tableView deselectRowAtIndexPath:indexPath animated:NO];
}

UICollectionView

UICollectionView的item点击效果需要自己实现,系统提供了这些方法

- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
   //当cell高亮时返回是否高亮
    return YES;
}
 
- (void)collectionView:(UICollectionView *)colView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell* cell = [colView cellForItemAtIndexPath:indexPath];
    //设置(Highlight)高亮下的颜色
    [cell setBackgroundColor:[UIColor grayColor]];
}
 
- (void)collectionView:(UICollectionView *)colView  didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell* cell = [colView cellForItemAtIndexPath:indexPath];
    //设置(Nomal)正常状态下的颜色
    [cell setBackgroundColor:[UIColor whiteColor]];
}

实现这两个方法后会发现单击并没有看到效果,只有长按才能看到颜色变化。要实现单击就能看到点击效果需设置UICollectionView的delaysContentTouches属性为false。


self.collectionView.delaysContentTouches = false;

  • 另外我尝试调用了这个方法,没有看到高亮,目前使用上面说的方法
// UICollectionView被选中时调用的方法
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    /* 取消单元格当前选中状态 */
    [collectionView deselectItemAtIndexPath:indexPath animated:YES];
}

你可能感兴趣的:(UICollectionView点击效果-松开手选中颜色消失)