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 отображает представления и слои. Сделайте это как изображение, а затем установите его в качестве фона.