我想知道我是否可以在带有ARKit的增强现实应用中使用UIButton
,UILabel
等UI元素。
答案 0 :(得分:1)
是,您可以使用UIKit
元素添加到位于显示AR场景(UIView
或{{1的视图上方的ARSKView
元素中}})。
如果您在Xcode中创建一个新项目并选择“增强现实应用”模板,您可以看到AR内容只是一个视图,就像任何其他ARSCNView
视图一样。
答案 1 :(得分:1)
什么对我有用 在main.storyboard中: - 删除SceneView - 添加常规UIView - 在其上添加ARKit SceneKit View - 然后你可以添加按钮等。
答案 2 :(得分:0)
是的,您可以将UI元素放在显示AR场景的ARSKView
或ARSCNView
之上:
let scanningPanel = UIImageView()
scanningPanel.backgroundColor = UIColor(white: 0.33, alpha: 0.6)
scanningPanel.layer.masksToBounds = true
scanningPanel.frame = CGRect(x: -2,
y: self.sceneView.frame.height-270,
width: 178,
height: 50)
scanningPanel.layer.cornerRadius = 10
let scanInfo = UILabel(frame: CGRect(x: 8,
y: self.sceneView.frame.height-268,
width: 160,
height: 45))
scanInfo.textAlignment = .left
scanInfo.font = scanInfo.font.withSize(15)
scanInfo.textColor = UIColor.white
scanInfo.text = "SCAN A SURFACE"
添加:
self.sceneView.addSubview(scanningPanel)
self.sceneView.addSubview(scanInfo)
删除:
if(scanInfo.isDescendant(of: self.sceneView)) {
scanInfo.removeFromSuperview()
}
答案 3 :(得分:0)
您可以在ARKit中的平面上插入任何视图的内容,如下所示:
let plane = SCNPlane(width: sceneView.bounds.width/3000,
height: sceneView.bounds.height/3000)
plane.firstMaterial?.diffuse.contents = self.anyView`
手势和点击会自动发送到该视图。 Try my example
答案 4 :(得分:0)
如果您也对该UIView子类的透明模式感兴趣,请尝试我的示例https://github.com/erikhric/ar-menu
您可以使用不同的混合模式。我想.alpha可以满足您的目的。