ARKit: Как добавить кнопку в ARView в раскадровке? - PullRequest
0 голосов
/ 25 января 2020

Я новичок в ARKit (и новичок в Swift), но я пытаюсь создать базовое c AR приложение. Я следую этому уроку , в котором простая сцена создается по существу, делая все в реальности composer, кроме добавления простой кнопки стартовой сцены, которая добавляется в ARView в раскадровке - вы можете видеть, что укажите c момент в уроке здесь . Однако, когда я пытаюсь сделать то же самое, элемент button полностью заменяет ARView, а не добавляется как дочерний элемент ARView, как это происходит в этом руководстве.

Вы можете увидеть ниже о том, что происходит. Вот раскадровка, прежде чем я добавлю кнопку.

Storyboard before adding button

Затем я ищу элемент кнопки, перетаскиваю его в ARView, после чего он заменяет его, а не добавление в качестве ребенка. См. Ниже результат.

Storyboard after adding button

Моя версия xcode - 11.2.

Любой совет очень ценится, и если какая-либо дополнительная информация необходимо, пожалуйста, спросите. Спасибо.

Ответы [ 2 ]

1 голос
/ 25 января 2020

Вы должны вкладывать как ARView, так и Button под UIView. Сначала добавьте UIView в качестве прямого потомка к ViewController. Затем добавьте ARView под UIView, который вы создали ранее. Затем вы также можете добавить UIButton в том же UIView.

Редактировать: После просмотра видео-учебника, связанного с вашим вопросом, «ARView», которое учебник имеет как дочерний элемент ViewController, не является фактический ARView, но UIView переименован в "ARView", чтобы уточнить.

0 голосов
/ 14 апреля 2020

Самый простой способ добавить кнопки в RealityKit ARView - это добавить их программно. Вот фрагмент кода, показывающий, как вы можете это сделать:

import RealityKit

class ViewController: UIViewController {

    @IBOutlet var arView: ARView!

    override func viewDidLoad() {
        super.viewDidLoad()           
        let boxAnchor = try! Experience.loadBox()
        arView.scene.anchors.append(boxAnchor)

        let rect1 = CGRect(x: 50, y: 50, width: 100, height: 50)
        let rect2 = CGRect(x: 120, y: 50, width: 100, height: 50)

        // PLAY BUTTON
        let playButton = UIButton(frame: rect1)
        playButton.setTitle("Play", for: .normal)
        playButton.addTarget(self, action: #selector(play), for: .touchUpInside)

        // STOP BUTTON
        let stopButton = UIButton(frame: rect2)
        stopButton.setTitle("Stop", for: .normal)
        stopButton.addTarget(self, action: #selector(stop), for: .touchUpInside)

        self.view.addSubview(playButton)
        self.view.addSubview(stopButton)

        self.loadAudio()
    }       
    @objc func play(sender: UIButton!) {
        self.audioController?.play()
    }
    @objc func stop(sender: UIButton!) {
        self.audioController?.pause()
    }
}

enter image description here

...