CAGradientLayer установлен в качестве фонового блока scenekit

Я работаю над игрой 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 блокирует сцену. Если я устанавливаю фон сцены в качестве UIColor, он работает на всех устройствах.

Как я могу это исправить и почему это проблема?

РЕДАКТИРОВАТЬ: похоже, по какой-то причине это может быть добавление градиентного слоя в качестве подслоя в UIView. Есть ли способ это исправить?

1 ответ

Решение

Это связано с тем, как UIKit отображает представления и слои. Сделайте это как изображение, а затем установите его в качестве фона.

Другие вопросы по тегам