Inf*_*ics 9 iphone uiview ios swift arkit
我正在使用ARKit开展AR项目.
我想在ARKit场景中添加一个UIView.当我点击一个对象时,我希望将信息作为对象旁边的"弹出窗口".这些信息在UIView中.
是否可以将此UIView添加到ARKit场景?我将这个UIView设置为场景,然后我该怎么办?我可以给它一个节点然后将它添加到ARKit场景吗?如果是这样,它是如何工作的?
或者还有另一种方式吗?
谢谢!
编辑:我的SecondViewController的代码
class InformationViewController: UIViewController {
@IBOutlet weak var secondView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
self.view = secondView
}
}
Run Code Online (Sandbox Code Playgroud)
编辑2:firstViewController中的代码
guard let secondViewController = storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else {
print ("No secondController")
return
}
let plane = SCNPlane(width: CGFloat(0.1), height: CGFloat(0.1))
plane.firstMaterial?.diffuse.contents = secondViewController.view
let node = SCNNode(geometry: plane)
Run Code Online (Sandbox Code Playgroud)
我只得到一架飞机的白色屏幕,而不是视线.
Lës*_*ski 16
实现这一目标的最简单(尽管未记录)方法是将UIView视图控制器支持为SCNPlane(或任何其他几何体上的材质的漫反射内容),但出于显而易见的原因,它最适合于平面.
let plane = SCNPlane()
plane.firstMaterial?.diffuse.contents = someViewController.view
let planeNode = SCNNode(geometry: plane)
Run Code Online (Sandbox Code Playgroud)
您将不得不将视图控制器保留在某处,否则它将被释放并且平面将不可见.只使用一个UIView没有任何UIViewController将抛出错误.
关于它的最好的事情是它保持所有的手势,实际上只是作为一个简单的视图.例如,如果使用UITableViewController视图,则可以在场景内向右滚动.
我还没有在iOS 10及更低版本上测试它,但到目前为止它一直在iOS 11上运行.在普通的SceneKit场景和ARKit中都可以使用.
我现在无法为您提供代码,但这是如何做到的。
SCNPlane。UIView使用您需要的所有元素创建您的。UIView。SCNPlane。或者甚至更容易使用SKScene标签制作并将其添加为 的材料SCNPlane。
| 归档时间: |
|
| 查看次数: |
3917 次 |
| 最近记录: |