我正在使用一个UIVisualEffect,它将模糊效果应用于UICollectionView的自定义单元格内的UIImageView。这用作占据整个屏幕的单元格的背景。
UIVisualEffect *blurEffect;
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
self.blurEffect = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
self.blurEffect.frame = self.blurBackground.bounds;
[self.blurBackground addSubview:self.blurEffect];
当我滚动时,帧速率会下降一点,直到单元格移动停止。
我试过了:
cell.layer.shouldRasterize = YES;
cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
但这只会让事情变得更糟(我理解为什么在this thread)。
我正在使用dequeueReusableCellWithReuseIdentifier。
根据我的理解,模糊效果一直在重新计算,所以也许我可以保存模糊的图像而不是在每一帧上重新渲染它?知道怎么做吗?
关于如何提高绩效的任何其他想法?
答案 0 :(得分:0)
实现UIScrollViewDelegate,当 - [ scrollViewWillBeginDragging:]删除模糊,和 - [scrollViewWillEndDragging:withVelocity:targetContentOffset:]再次添加模糊视图。这可能适用于滚动动画。