使用UIVisualEffectView创build一个模糊视图,在模拟器上正确,但不是在iPhone和iPad上

目标:在应用程序中创build模糊视图。

我使用的代码是:

func createBlurBackgroundView() { if !UIAccessibilityIsReduceTransparencyEnabled() { if blurredSubView == nil || blurredSubView.superview == nil { print("Create blurred background view") self.backgroundColor = UIColor.clearColor() let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light) blurredSubView = UIVisualEffectView(effect: blurEffect) blurredSubView.frame = self.bounds self.insertSubview(blurredSubView, atIndex: 0) } } else { print("Transparency disabled!! no blur view") } } 

结果是:在模拟器上的一切工作正常:

在这里输入图像说明

但是当我在iphone和ipad上运行它时,它看起来像: 在这里输入图像说明

请注意我没有改变“降低透明度”的设置!

那么当我想拍摄这个黑色的背景而不模糊的时候,你猜怎么着? 在照片stream中,我看到了正确的模糊视图图片…

此外,当我双击主页button,并看看多任务接口,我看到了模糊视图效果!

在这里输入图像说明

更多信息:我使用的是iPhone6s,两者都是iOS 9.3.1 Xcode版本7.3

我试图解决这个问题,我很累,我尝试了其他方法,如拍摄快照图像,然后对图像应用模糊效果,但有其他错误和其他CONs

UIVisualEffectView不适用于SpriteKit 。 我不知道他们在后面做了什么不同,如果有人知道,请随时编辑答案。 我的猜测是底层的实现使用了不起作用的不同的API。 模拟器做各种技巧来模拟实际的设备,所以他们可能会使用与真实设备不同的东西,这就是为什么它可以在模拟器上工作。

取出self.backgroundColor = UIColor.clearColor()。