gpt4 book ai didi

ios - 在 didHighlightItemAt 和 didUnhighlightItemAt 上更改 UICollectionViewCell 的背景在滚动时闪烁

转载 作者:行者123 更新时间:2023-11-28 09:24:13 27 4
gpt4 key购买 nike

我想在用户点击或关注它时更改 UICollectionView 中单元格的背景。我想在用户点击后立即提供不断变化的背景反馈,所以我在 UICollectionViewDelegateFlowLayout 中实现了这两个方法:

func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {
if let cell = collectionView.cellForItem(at: indexPath) as? CustomCell {
cell.highlight()
}
}

func collectionView(_ collectionView: UICollectionView, didUnhighlightItemAt indexPath: IndexPath) {
if let cell = collectionView.cellForItem(at: indexPath) as? CustomCell {
cell.unhighlight()
}
}

它有效,但不幸的是,当用户在集合上滚动时,调用了 didHighlightItemAt 方法并立即调用了 didUnhighlightItemAt 方法,因此这导致单元格闪烁。

我想知道如何安排调用 cell.highlight 0.1 秒,如果 didUnhighlightItemAt 调用早于 0.1 秒,我会取消高亮调用。

但是有没有更好的解决方案呢?

类似的效果发生在“设置”应用中(但更难做到,在我的应用中更容易看到闪烁的单元格):

Demo

最佳答案

- (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
cell.backgroundColor = UIColor.redColor;
}

- (void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
cell.backgroundColor = UIColor.orangeColor;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
cell.backgroundColor = UIColor.orangeColor;
return cell;
}

输出:

enter image description here

关于ios - 在 didHighlightItemAt 和 didUnhighlightItemAt 上更改 UICollectionViewCell 的背景在滚动时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47882130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com