UIVisualEffectView在不同设备上的呈现方式不同

时间:2014-06-09 21:14:10

标签: ios swift ios8

在我的ViewController.swift

var img = UIImageView(image: UIImage(named: "puddles"))

img.frame = view.bounds;
view.addSubview(img);


var effect = UIBlurEffect(style: UIBlurEffectStyle.Light)
var effectView = UIVisualEffectView(effect: effect)
effectView.frame = CGRectMake(0, 0, 500, 500)
view.addSubview(effectView)

使用上面iPad AiriPhone 5iPhone 5S模拟器中的代码呈现的图片:

woof, doesn't that look so good

使用上面iPhone 4SiPad 2iPad Retina模拟器中的代码呈现的图片:

I can't see my doge!

注意:上面的两张图片都是从模拟器中拍摄的,但这也可以在运行iOS 8 Beta 1的实际设备上重现。

显然,我想在所有设备上实现第一个效果。如何在所有设备上实现相同的第一效果?

2 个答案:

答案 0 :(得分:26)

iOS 8中的

UIVisualEffectView与iOS 7中的(以前的私有API)半透明和活力效果完全相同。就像iOS 7效果一样,它们可以回归到硬件上的图形更简单的实现不能实时渲染这种复杂的图形效果。

答案 1 :(得分:5)

最近,当我们的视觉效果视图在我们的某个开发人员的计算机上呈现出一种难看的灰色时,我们就遇到了这个问题。

UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

事实证明他们已经在他们的iOS模拟器上启用了Low Quality Graphics Override。将此选项恢复为Device Default可修复问题并显示一个漂亮的半透明视图。

  

iOS模拟器>菜单栏>调试>图形质量覆盖>设备默认值

Low quality graphics override option in iOS Simulator