UICollectionView didSelectItemAtIndexPath 需要很长时间才能触发(2-3 秒)
UICollectionView didSelectItemAtIndexPath takes a long time to fire (2-3 seconds)
我有一个 UICollectionView 嵌入在一个 UIView 的子类中。
UIView 从 NIB 加载并包含 UICollectionView,其中有一个 IBOutlet。
UICollectionView 委托和数据源在视图的 awakeFromNib 中设置为此 UIView。
当用户按下 UICollectionView 中的 Cell 时,以下方法需要 2-3 秒才能在 iPhone 4 秒内被调用:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
在更快的 phone 上,它更快且响应更快(但您可以看出它仍然没有达到应有的响应速度)。它在 4s 上也应该非常快。 4s 是 运行 9.3(我预计时间为 20-40 毫秒,不会更长)。
目前从用户体验的角度来看,它的表现非常缓慢。
那么 UI 线程是否负载过重以至于 didSelect 方法无法喘息? (注意:其他 UI 动作很快)。
问题是:
在我的单元格 class 中,我有一个 UIImageView,我正在设置一个大图像(尺寸超过 1300 x 1300),并将其设为模板(因此加载了 2 个图像),然后对其应用 Tint 颜色。我在 cellForRow 中执行此操作...虽然没有在 didSelect 上调用该代码,但图像本身的绝对大小及其缩放导致选择单元格时 didSelect 的速度变慢。
我将其替换为 128 x 128 图像,现在相同的代码运行速度很快。
我有一个 UICollectionView 嵌入在一个 UIView 的子类中。
UIView 从 NIB 加载并包含 UICollectionView,其中有一个 IBOutlet。
UICollectionView 委托和数据源在视图的 awakeFromNib 中设置为此 UIView。
当用户按下 UICollectionView 中的 Cell 时,以下方法需要 2-3 秒才能在 iPhone 4 秒内被调用:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
在更快的 phone 上,它更快且响应更快(但您可以看出它仍然没有达到应有的响应速度)。它在 4s 上也应该非常快。 4s 是 运行 9.3(我预计时间为 20-40 毫秒,不会更长)。
目前从用户体验的角度来看,它的表现非常缓慢。
那么 UI 线程是否负载过重以至于 didSelect 方法无法喘息? (注意:其他 UI 动作很快)。
问题是: 在我的单元格 class 中,我有一个 UIImageView,我正在设置一个大图像(尺寸超过 1300 x 1300),并将其设为模板(因此加载了 2 个图像),然后对其应用 Tint 颜色。我在 cellForRow 中执行此操作...虽然没有在 didSelect 上调用该代码,但图像本身的绝对大小及其缩放导致选择单元格时 didSelect 的速度变慢。
我将其替换为 128 x 128 图像,现在相同的代码运行速度很快。