UITableViewCell中UIVisualEffectView的性能问题

时间:2014-11-03 13:22:04

标签: ios objective-c iphone uitableview uivisualeffectview

我有UITableView有10个像Instagram这样的大图像,我对这些图像有一些模糊视图。我像这样添加我的visualeffects UITableViewCell;

_blurButtonEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

_visualButtonEffectView = [[UIVisualEffectView alloc] initWithEffect:_blurButtonEffect];
_visualButtonEffectView.layer.cornerRadius = 10.0f;

_visualEmojiEffectView = [[UIVisualEffectView alloc] initWithEffect:_blurButtonEffect];
_visualEmojiEffectView.layer.cornerRadius = 24.0f;

_visualButtonEffectView.layer.masksToBounds = YES;
_visualEmojiEffectView.layer.masksToBounds = YES;

_visualButtonEffectView.frame = CGRectMake(20.0f, _button.frame.origin.y + 7.0f, 48.0f, 48.0f);
_visualEmojiEffectView.frame = CGRectMake(_emoji.frame.origin.x - 4.0f, _button.frame.origin.y + 22.0f, ([UIScreen mainScreen].bounds.size.width/2) - 25.0f, 30.0f);

如果按钮标题为null,则显示_visualEmojiEffectView并隐藏_visualButtonEffectView。否则始终显示_visualButtonEffectView。当我滚动我的UITableView时,性能非常完美,但这种模糊效果显得很烦人,它们似乎随着每个滚动动作和触摸闪烁。我可以在单元格中阻止它;

self.layer.shouldRasterize = YES;
self.layer.rasterizationScale = [UIScreen mainScreen].scale;

如果我像这样光栅化我的单元格,模糊效果非常完美,但即使在iPhone 6上,滚动性能也很糟糕。使用UITableViewCell配置UIBlurEffectView的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

我知道回复为时已晚,但我希望这对某人有所帮助。您可以使用非常低的alpha为视觉效果视图提供白色背景颜色。像这样:

[_visualButtonEffectView setBackgroundColor:[UIColor colorWithWhite:1.0 alpha:0.2]];

您也可以尝试使用UIToolbar而不是视觉效果视图。它没有给出完全相同的效果,但仍然足够好。