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单元格的背景所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)