CAGradientLayer 设置为 scenekit 背景块场景
CAGradientLayer set as scenekit background blocks scene
我正在开发 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
它只在我的 phone 上运行良好。如果我使用另一个测试设备,CAGradientLayer 会阻塞场景。如果我将 sceneView 的背景设置为 UIColor,它适用于所有设备。
我该如何解决这个问题,为什么会出现这个问题?
编辑:看起来由于某种原因它可能将 gradientLayer 作为 subLayer 添加到 UIView。有什么办法可以解决这个问题?
这是因为 UIKit 呈现视图和层的方式。将其制作为图像,然后将其设置为背景。
我正在开发 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
它只在我的 phone 上运行良好。如果我使用另一个测试设备,CAGradientLayer 会阻塞场景。如果我将 sceneView 的背景设置为 UIColor,它适用于所有设备。
我该如何解决这个问题,为什么会出现这个问题?
编辑:看起来由于某种原因它可能将 gradientLayer 作为 subLayer 添加到 UIView。有什么办法可以解决这个问题?
这是因为 UIKit 呈现视图和层的方式。将其制作为图像,然后将其设置为背景。