ios - UITableViewCell 中 UIVisualEffectView 的性能问题

标签 ios objective-c iphone uitableview uivisualeffectview

我有 UITableView,其中包含 10 个像 Instagram 这样的大图像,我对这些图像有一些模糊 View 。我像那样添加视觉效果 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);

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

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

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

最佳答案

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

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

您也可以尝试使用 UIToolbar 而不是视觉效果 View 。它不会产生完全相同的效果,但仍然足够好。

关于ios - UITableViewCell 中 UIVisualEffectView 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26715271/

相关文章:

iphone - dealloc期间 `self`用法的解释?

iphone - 在 Objective-C 中将 & 转换为 &

iphone - 无法在 didSelectRowAtIndexPath 中隐藏自定义复选标记

ios - 设备界面方向

ios - 如何管理 Quick Blox Session?

ios - 如何访问 iOS 中的所有文件(pdf、doc 等)?

iphone - 自定义 UINavigationBar 字体不显示

ios - 隐藏快速从不同文件中删除 subview

ios - 立即调用 CATransaction 完成

ios - 在 iOS 中连接两个音频文件(一个接一个)