提高应用于单元格内UIImageView的UIVisualEffect(模糊)的性能

时间:2015-03-05 05:32:55

标签: objective-c xcode uicollectionview

我正在使用一个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。

根据我的理解,模糊效果一直在重新计算,所以也许我可以保存模糊的图像而不是在每一帧上重新渲染它?知道怎么做吗?

关于如何提高绩效的任何其他想法?

1 个答案:

答案 0 :(得分:0)

实现UIScrollViewDelegate,当 - [ scrollViewWillBeginDragging:]删除模糊,和 - [scrollViewWillEndDragging:withVelocity:targetContentOffset:]再次添加模糊视图。这可能适用于滚动动画。