是否可以在增强现实应用中使用自定义iOS UI元素,如UILabel

时间:2017-11-22 17:43:16

标签: ios arkit

我想知道我是否可以在带有ARKit的增强现实应用中使用UIButtonUILabel等UI元素。

5 个答案:

答案 0 :(得分:1)

,您可以使用UIKit元素添加到位于显示AR场景(UIView或{{1的视图上方的ARSKView元素中}})。

如果您在Xcode中创建一个新项目并选择“增强现实应用”模板,您可以看到AR内容只是一个视图,就像任何其他ARSCNView视图一样。

答案 1 :(得分:1)

什么对我有用 在main.storyboard中: - 删除SceneView - 添加常规UIView - 在其上添加ARKit SceneKit View - 然后你可以添加按钮等。

答案 2 :(得分:0)

是的,您可以将UI元素放在显示AR场景的ARSKViewARSCNView之上:

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可以满足您的目的。