Как показать представление uicollection в ARSCNView в iOS Swift

Я пытаюсь реализовать представление uicollection в arscnview и горизонтальное направление прокрутки с взаимодействием с пользователем. В представлении коллекции ячейка содержит изображение и название продукта. можно ли добавить представление коллекции arscnview.

Результат, который я получил: Как показать представление uicollection в ARSCNView в iOS Swift

вот код, который я использовал до сих пор:

     let newCollection: UICollectionView = {
    let layout = UICollectionViewFlowLayout()
    let collection = UICollectionView(frame: CGRect(x: 0, y: 0, width: 200, height: 100), collectionViewLayout: layout)
    layout.scrollDirection = .horizontal
    collection.backgroundColor = UIColor.gray
    collection.translatesAutoresizingMaskIntoConstraints = false
    collection.isScrollEnabled = true
    return collection
}()

  func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

    DispatchQueue.main.async {
        guard let imageAnchor = anchor as? ARImageAnchor,
            let imageName = imageAnchor.referenceImage.name else { return }

   self.newCollection.delegate = self
            self.newCollection.dataSource = self
            self.newCollection.register(MyCollectionViewCell.self, forCellWithReuseIdentifier: self.cellId)
            self.view.addSubview(self.newCollection)
            self.setupCollection()

            let collectionPlane = SCNPlane(width: 0.2, height: 0.1)
            collectionPlane.firstMaterial?.diffuse.contents = self.newCollection

            let collectionNode = SCNNode(geometry: collectionPlane)
            collectionNode.eulerAngles.x = -.pi/2
            collectionNode.runAction(SCNAction.moveBy(x: 0, y: 0, z: 0, duration: 0))

            node.addChildNode(collectionNode)


                   self.sceneView.scene.rootNode.addChildNode(node)


   }

      //collection view

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
    return 7
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
    let cell = newCollection.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! MyCollectionViewCell
    cell.backgroundColor = .blue
    return cell
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    return CGSize(width: 100, height: 50)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {

    return UIEdgeInsets(top: 3, left: 3, bottom: 3, right: 3)
}

ожидаемый результат: Как показать представление uicollection в ARSCNView в iOS Swift

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
244
1

Ответы 1

Задайте для свойства содержимого diffuse свойства свойство view для collectionView.

let material = SCNMaterial()
material.diffuse.contents = yourCollectionView.view

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