【问题标题】:UICollectionView didSelectItemAtIndexPath takes a long time to fire (2-3 seconds)UICollectionView didSelectItemAtIndexPath 需要很长时间才能触发(2-3 秒)
【发布时间】:2016-06-24 16:01:22
【问题描述】:

我在作为 UIView 的子类中嵌入了一个 UICollectionView。
该 UIView 是从 NIB 加载的,并且包含有 IBOutlet 的 UICollectionView。

UICollectionView 委托和数据源在视图的 awakeFromNib 中设置为此 UIView。

当用户在 UICollectionView 中按下 Cell 时,在 iPhone 4s 上调用以下方法需要 2-3 秒:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

在速度更快的手机上,它的速度更快、响应更快(但您可以看出它仍然没有应有的响应速度)。在 4s 上应该也很快。 4s 正在运行 9.3(我预计时间为 20-40 MS,而不是更长)。

目前,从用户体验的角度来看,它的表现非常缓慢。

那么可能是 UI 线程加载过多而无法让 didSelect 方法呼吸? (注意:其他 UI 动作很快)。

【问题讨论】:

  • 你到底在didSelect做什么?
  • 现在:没有任何目的。我正在做 NSLog(@"TEST")。
  • 触摸可能被其他手势识别器延迟。

标签: objective-c uicollectionview didselectrowatindexpath


【解决方案1】:

问题是: 在我的单元格类中,我有一个 UIImageView 并且我正在设置一个大图像(尺寸超过 1300 x 1300),并将其设置为模板(因此加载了 2 个图像),然后对其应用 Tint 颜色。我在 cellForRow 中执行此操作...尽管在 didSelect 上没有调用该代码,但图像本身的绝对大小及其缩放导致在选择单元格时 didSelect 速度变慢。

我将其替换为 128 x 128 的图像,并且现在相同的代码可以快速运行。

【讨论】:

  • 我有一个 1200 x 1200,变成了 128 x 128,你这个人 Alex。 UICollectionView 现在很快。
猜你喜欢
  • 1970-01-01
  • 2018-08-19
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2012-12-04
  • 2012-12-03
相关资源
最近更新 更多