4

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

我使用的代码:

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 和 ipads 上运行它时,它看起来像: 在此处输入图像描述

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

那么当我想拍摄这个黑色背景的快照时,你猜怎么着?!在照片流中,我看到了正确的模糊视图图片......

另外,当我双击home键,查看多任务界面时,我看到了模糊视图效果!

在此处输入图像描述

更多信息:我使用 iphone6s、ipad air2、iOS 9.3.1 Xcode 版本 7.3

我已经厌倦了尝试解决这个问题,我尝试了其他方法,比如拍摄快照图像,然后在图像上应用模糊效果,但是还有其他错误和其他缺点

4

2 回答 2

4

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

于 2016-04-06T08:18:57.217 回答
0

删除代码中的这一行

self.backgroundColor = UIColor.clearColor()
于 2016-04-06T07:13:46.583 回答