ios – 更改UICollectionView单元格的背景

ios – 更改UICollectionView单元格的背景,第1张

概述我有一个UICollectionView,我以编程方式创建.我希望收集视图的行为方式如下: 1. User touches cell2. Cell background color changes3. User releases touch4. Cell background color changes 这应该是一个快速的颜色变化,恰好在选择器与执行抽头 *** 作相关的选项之前发生,其中包含集合视 我有一个UICollectionVIEw,我以编程方式创建.我希望收集视图的行为方式如下:
1. User touches cell2. Cell background color changes3. User releases touch4. Cell background color changes

这应该是一个快速的颜色变化,恰好在选择器与执行抽头 *** 作相关的选项之前发生,其中包含集合视图的视图控制器从堆栈中d出.

我一直在看这个问题:UICollectionView cell change background while tap

其中有以下用于此目的的方法摘要:

// Methods for notification of selection/deselection and highlight/unhighlight events.// The sequence of calls leading to selection from a user touch is://// (when the touch begins)// 1. -collectionVIEw:shouldHighlightItemAtIndexPath:// 2. -collectionVIEw:dIDHighlightItemAtIndexPath://// (when the touch lifts)// 3. -collectionVIEw:shouldSelectItemAtIndexPath: or -    collectionVIEw:shoulddeselectItemAtIndexPath:// 4. -collectionVIEw:dIDSelectItemAtIndexPath: or -collectionVIEw:dIDdeselectItemAtIndexPath:// 5. -collectionVIEw:dIDUnhighlightItemAtIndexPath:

我假设我只需要从“触摸开始”和“触摸结束”时执行上述方法之一.但是无论我做什么,看起来背景颜色都会发生变化,然后再改变.这是我尝试的一些不起作用的例子:

- (voID)collectionVIEw:(UICollectionVIEw *)collectionVIEw dIDSelectItemAtIndexPath:(NSIndexPath *)indexPath {   //pop vc  }- (voID)collectionVIEw:(UICollectionVIEw *)collectionVIEw dIDHighlightItemAtIndexPath:(NSIndexPath *)indexPath{  UICollectionVIEwCell* cell = [collectionVIEw cellForItemAtIndexPath:indexPath];  cell.contentVIEw.backgroundcolor = [UIcolor redcolor];}- (voID)collectionVIEw:(UICollectionVIEw *)collectionVIEw dIDdeselectItemAtIndexPath:(NSIndexPath *)indexPath{  UICollectionVIEwCell *cell = [collectionVIEw cellForItemAtIndexPath:indexPath];  cell.contentVIEw.backgroundcolor = [UIcolor greencolor];}

这将导致单元格背景颜色仅更改为红色.我也看了这个问题:UICollectionView Select and Deselect issue并尝试实现[UICollectionVIEw selectItemAtIndexPath:animated:scrollposition:]并在dIDSelectItemAtIndexPath内调用它,但是这也没有.集合视图数据源和委托设置.

解决方法 问题在于,您正在更改亮点上的颜色,并将其更改为取消选择,而不是在高亮度上

你应该简单地改变一下:

- (voID)collectionVIEw:(UICollectionVIEw *)collectionVIEw dIDdeselectItemAtIndexPath:(NSIndexPath *)indexPath{  UICollectionVIEwCell *cell = [collectionVIEw cellForItemAtIndexPath:indexPath];  cell.contentVIEw.backgroundcolor = [UIcolor greencolor];}

到这个:

- (voID)collectionVIEw:(UICollectionVIEw *)collectionVIEw dIDUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath{  UICollectionVIEwCell *cell = [collectionVIEw cellForItemAtIndexPath:indexPath];  cell.contentVIEw.backgroundcolor = [UIcolor greencolor];}

另外,如果您不希望稍等一下让您的高亮发生,您应该将集合视图的delayedContenttouches属性设置为NO

编辑:也确保你打电话

[collectionVIEw deselectItemAtIndexPath:indexPath animated:NO];

在-dIDSelectItemAtIndexPath方法中

总结

以上是内存溢出为你收集整理的ios – 更改UICollectionView单元格的背景全部内容,希望文章能够帮你解决ios – 更改UICollectionView单元格的背景所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1111671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存