[英]How to show uicollection view in ARSCNView in iOS swift
I am trying to implement uicollection view in arscnview and scroll direction horizontal with user interaction. 我正在尝试在arscnview中实现uicollection视图,并通过用户交互来水平滚动方向。 In collection view cell contains product image and name.
在集合视图中,单元格包含产品图像和名称。 is it possible to add collection view arscnview.
是否可以添加集合视图arscnview。
here is the code i treid so far: 这是到目前为止我整理的代码:
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)
}
Set the material's diffuse's contents property to the collectionView's view property 将材质的漫反射的内容属性设置为collectionView的view属性
let material = SCNMaterial()
material.diffuse.contents = yourCollectionView.view
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.