CAGradientLayer 设置为场景包背景块场景

Posted

技术标签:

【中文标题】CAGradientLayer 设置为场景包背景块场景【英文标题】:CAGradientLayer set as scenekit background blocks scene 【发布时间】:2018-02-26 02:49:30 【问题描述】:

我正在开发一款 Swift 4、SceneKit 3D 游戏。我使用以下方法将场景的背景设置为 CAGradientLayer:

let gradientLayer = CAGradientLayer()
    gradientLayer.frame = self.view.bounds
    gradientLayer.colors = [UIColor.white.cgColor, UIColor.init(red: 160/255, green: 235/255, blue: 232/255, alpha: 1).cgColor]
    sceneView.scene?.background.contents = gradientLayer

它只能在我的手机上正常工作。如果我使用另一个测试设备,CAGradientLayer 会阻挡场景。如果我将 sceneView 的背景设置为 UIColor,它适用于所有设备。

我该如何解决这个问题?为什么会出现这个问题?

编辑:看起来由于某种原因它可能会将渐变图层作为子图层添加到 UIView。有什么办法解决这个问题?

【问题讨论】:

【参考方案1】:

这是因为 UIKit 呈现视图和层的方式。将其设为图像,然后将其设置为背景。

【讨论】:

以上是关于CAGradientLayer 设置为场景包背景块场景的主要内容,如果未能解决你的问题,请参考以下文章

使用滑块实时更改 CAGradientLayer 的颜色

Swift - 通过 switch 语句为 CAGradientLayer 设置动画

在 CAGradientLayer 上方显示 SCNScene

为啥我的 CAGradientLayer 为所有更改设置动画?

CAGradientLayer 无法正常工作

为包含 CAGradientLayer 的 UIView 设置动画