3

我有一个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]; 图像出现。这意味着图像正在被复制到手机中。

实体电话

模拟器

4

3 回答 3

4

这一定是我遇到的最愚蠢的问题之一。显然,我在 iPhone 设置中打开了“降低透明度”。因此问题。希望这可以帮助其他一些试图节省电池的可怜人。

于 2015-07-01T13:36:07.107 回答
1

您可以使用以下方法检测何时在 iOS 8+ 中启用了“降低透明度”:

if (UIAccessibilityIsReduceTransparencyEnabled()) {
   ...
}

这篇博文更深入地检测UIVisualEffectView设备上是否可用。

于 2015-10-15T01:24:34.047 回答
-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;

看这个

于 2015-07-01T12:46:49.180 回答