swift - CAGradientLayer 设置为 scenekit 背景 block 场景

标签 swift scenekit cagradientlayer sceneview

我正在开发 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,则它适用于所有设备。

我该如何解决这个问题以及为什么这是一个问题?

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

最佳答案

这是因为 UIKit 渲染 View 和图层的方式。将其设为图像,然后将其设置为背景。

关于swift - CAGradientLayer 设置为 scenekit 背景 block 场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48980785/

相关文章:

ios - 我什么时候应该在 CAMetalLayer 上调用 nextDrawable()?

ios - ARKit - ARAnchor 到 2D 空间的投影

swift - 自定义 SCNGeometry 节点上的基于物理的照明

ios - 带有 CAShapeLayer 的 UIView 不显示 CAGradientLayer

swift - 更改 uiview 子类中 CGPoint 线的颜色

ios - 从 SPM 包运行 SwiftUI 预览

swift - 也能抛出的SequenceType/GeneratorType?

ios - 如何将渐变应用于 iOS Swift 应用程序的背景 View

ios - 如何单击全屏 UIView 后面的按钮?

ios - 在 Swift 的数组中查找 SKSpriteNode 的索引