将UIVisualEffectView添加到UITableView的后台视图仅适用于模拟器而非设备

时间:2015-07-01 12:37:23

标签: ios objective-c uitableview uivisualeffectview

我有UITableView UIImageView作为backgroundView。这就像一个魅力。但是,现在我正在尝试模糊此图像(使用UIVisualEffectView),以便tableView的背景看起来模糊。 然而,我的代码以某种方式忽略了图像并简单地模糊了表格视图的白色背景。这是代码:

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sidebarImage"]];
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
[blurEffectView setFrame:tempImageView.bounds];
[tempImageView addSubview:blurEffectView];
self.tableView.backgroundView = tempImageView;
编辑:经过一些测试后,我发现这可以在模拟器上运行,但不能在实际设备上运行。我在井下方附上了截图。更令人惊讶的是,当我评论[tempImageView addSubview:blurEffectView]时;图像显示出来。这意味着图像正被复制到手机中。

Physical Phone

Simulator

3 个答案:

答案 0 :(得分:4)

这是我遇到的最愚蠢的问题之一。显然,我已经"降低透明度"在我的iPhone设置中打开。因此问题。希望这有助于其他一些穷人试图节省电池。

答案 1 :(得分:1)

您可以检测何时"降低透明度"在iOS 8+中启用:

if (UIAccessibilityIsReduceTransparencyEnabled()) {
   ...
}

This blog post更深入地检测设备上是否有UIVisualEffectView

答案 2 :(得分:-1)

试试这个

 UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sidebarImage"]];
    UIBlurEffect *blurEffect;
    blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

    UIVisualEffectView * blurEffectView;
    blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];


    blurEffectView.frame = tempImageView.bounds;
    [tempImageView addSubview:blurEffectView];
    self.tableView.backgroundView = tempImageView;

look at this