作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在用户点击或关注它时更改 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 秒,我会取消高亮调用。
但是有没有更好的解决方案呢?
类似的效果发生在“设置”应用中(但更难做到,在我的应用中更容易看到闪烁的单元格):
最佳答案
- (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;
}
输出:
关于ios - 在 didHighlightItemAt 和 didUnhighlightItemAt 上更改 UICollectionViewCell 的背景在滚动时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47882130/
我想在用户点击或关注它时更改 UICollectionView 中单元格的背景。我想在用户点击后立即提供不断变化的背景反馈,所以我在 UICollectionViewDelegateFlowLayou
我是一名优秀的程序员,十分优秀!