Вы смешиваете Legos и K'Nex здесь.
Давайте перейдем к документации и посмотрим, что является допустимым диффузным контентом для SCNMaterial:
Вы можете установить значение для этого свойства, используя любой из следующих
Типы:
Цвет (NSColor / UIColor или CGColor), определяющий однородный цвет для
поверхность материала
Число (NSNumber), указывающее равномерное скалярное значение для
поверхность материала (полезна для физических свойств, таких как
metalness) * +1010 *
Изображение (NSImage / UIImage или CGImage) с указанием текстуры, которая будет
нанесено на карту по поверхности материала
Объект NSString или NSURL, указывающий местоположение файла изображения
Видеоплеер (AVPlayer) или предварительный просмотр захвата видео
(AVCaptureDevice, только в iOS)
Базовый слой анимации (CALayer)
Текстура (SKTexture, MDLTexture, MTLTexture или GLKTextureInfo)
Сцена SpriteKit (SKScene)
Специально отформатированное изображение или массив из шести изображений с указанием
грани кубической карты
Когда вы проверяете элементы сцены, загруженной из файла, это значение
всегда либо цветной объект (класса NSColor или UIColor,
в соответствии с платформой) или объект изображения (из NSImage или UIImage
класс, в зависимости от платформы). Поэтому вы можете использовать тип
Самоанализ (метод isKind (of :) в Objective-C или
оператор или дай как сопоставление в Swift), чтобы определить тип
материальная собственность.
https://developer.apple.com/documentation/scenekit/scnmaterialproperty/1395372-contents
Давайте посмотрим, что такое UIView:
класс UIView: UIResponder
класс UIResponder: NSObject
https://developer.apple.com/documentation/uikit/uiview
https://developer.apple.com/documentation/uikit/uiresponder
Как видите, UIView не является допустимым типом.
Однако, UIView содержит CALayer
https://developer.apple.com/documentation/uikit/uiview/1622436-layer
Таким образом, вы сможете использовать это, чтобы получить то, что вам нужно от вашего взгляда:
func getCustomViewLayer() -> CALayer {
let view = UIView()
view.backgroundColor = .red
return view.layer
}