Я хочу добавить пользовательский UIView с одним UILabel в SCNNode (используя SceneKit и ARKit).
Я использовал SCNPlane с SCNMaterial, содержащим созданный слой UIView.Затем я запускаю новый SCNNode и добавляю его в сцену.Сначала я попробовал UIView, созданный в конструкторе интерфейсов, но это не работает.Поэтому я решил создать UIView программно.
class InfoPlaneNodeView: UIView {
var elevationLabel: UILabel
override init(frame: CGRect) {
elevationLabel = UILabel(frame: frame)
super.init(frame: frame)
backgroundColor = UIColor.white
layer.cornerRadius = 20
elevationLabel.translatesAutoresizingMaskIntoConstraints = false
elevationLabel.textColor = UIColor.black
elevationLabel.text = "333m"
addSubview(elevationLabel)
elevationLabel.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true
elevationLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
}
}
class InfoViewPlaneNode: SCNNode {
init(planeWidth: CGFloat, planeHeight: CGFloat) {
let material = SCNMaterial()
let infoPlaneNodeView = InfoPlaneNodeView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
material.diffuse.contents = infoPlaneNodeView.layer
material.transparency = 0.7
material.lightingModel = .constant
material.isDoubleSided = true
let plane = SCNPlane(width: planeWidth, height: planeHeight)
plane.materials = [material]
super.init()
self.geometry = plane
self.position = SCNVector3(0, 3, 0)
}
}
Когда я запускаю весь код, я вижу только белый UIView без UILabel.Я попробовал этот код без SceneKit и все работает отлично.Где проблема?Спасибо