大佬教程收集整理的这篇文章主要介绍了ios – UIVisualEffectView不会模糊它的SKView超级视图,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我实际得到的是:
实际上左边的视图并不是完全黑色的,你可以看到超视图中的高光是如何在几乎不透明的子视图中略微挣扎,但是没有应用模糊.它是iOS 8的bug /功能,还是我的错误/误解
这是我的UIVisualEffectView子类的基本内容:
class OptionsView: UIVisualEffectView { //... init(size: CGSizE) { buttons = [UIButton]() super.init(effect: UIBlurEffect(style: .Dark)) frame = CGRectMake(-size.width,size.width,size.height) addButtons() clipsToBounds = true } func show() { UIView.animateWithDuration(0.3,animations: { self.frame.origin.x = 0 }) } func hide() { UIView.animateWithDuration(0.3,animations: { self.frame.origin.x = -self.frame.size.width }) }
然后在GameScene类中:
在初始化程序中:
optionsView = OptionsView(size: CGSizeMake(130,size.height))
在didMoveToView中(查看:SKView):
view.addSubview(optionsView)
按下暂停按钮:
self.optionsView.show()
附:虽然我知道另外两种实现模糊视图的方法,但我认为这是最简单的方法,因为我的应用程序仅支持iOS8
>从superview渲染模糊的静态图像 – >
将uIImageView放在OptionsView上,其中clipsToBounds = true – >
动画UIImageView位置,同时为optionsView位置设置动画,使模糊相对于superview保持相对
>忘掉UIView,UIVisualEffectView和UIBlurView,并将SKEffectNode与SKCropNode一起使用.
class BlurCropNode: SKCropNode { var blurNode: BlurNode var size: CGSize init(size: CGSizE) { self.size = size blurNode = BlurNode(radius: 10) super.init() addChild(blurNodE) let mask = SKSpriteNode (color: UIColor.blackColor(),size: sizE) mask.anchorPoint = CGPoint.zeroPoint maskNode = mask } } class BlurNode: SKEffectNode { var sprite: SKSpriteNode var texture: SKTexture { get { return sprite.texture } set { sprite.texture = newValue let scale = UIScreen.mainScreen().scale let textureSize = newValue.size() sprite.size = CGSizeMake(textureSize.width/scale,textureSize.height/scalE) } } init(radius: CGFloat) { sprite = SKSpriteNode() super.init() sprite.anchorPoint = CGPointMake(0,0) addChild(spritE) filter = CIFilter(name: "CIGaussianBlur",withInputParameters: ["inpuTradius": radius]) shouldEnableEffects = true shouldRasterize = true } }
结果:
但是有几个问题
>在将shouldRasterize属性设置为true之前,裁剪不适用于SKEffectNode.我让整个屏幕变得模糊.所以我仍然不知道如何正确实现实时模糊.
> BlurCropNode上的动画不够流畅.由于捕获纹理并将其设置为effectNode的精灵子项,因此在开始时存在滞后.甚至dispatch_async也无济于事.
以上是大佬教程为你收集整理的ios – UIVisualEffectView不会模糊它的SKView超级视图全部内容,希望文章能够帮你解决ios – UIVisualEffectView不会模糊它的SKView超级视图所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。