ARKit Session Paused and Not Resuming

前端 未结 4 1365
小蘑菇
小蘑菇 2020-12-06 12:04

In my ARKit app I am presenting a modal window. When I close the modal and go back to the ARSCNView then I find out that the session is paused due to this code:

<         


        
4条回答
  •  没有蜡笔的小新
    2020-12-06 12:48

    Here's an answer working with Swift 4.2 and iOS 12.

    To present UI defined in another view controller over your AR scene, create your view controller instance and set it's modalPresentationStyle property to .overCurrentContext:

    EXAMPLE:
    
    func showMaterialPicker(completion: (Texture?) -> Void) {
    
        // create an instance of your view controller, I have convenience functions
        // setup to do this via an extension on UIViewController
        guard let materialPicker = MaterialCategoriesViewController.instance(from: .product) else {
            print("Unable to instantiate MaterialCategoriesViewController, bailing")
            return
        }
    
        // set presentation style and transition style
        materialPicker.modalPresentationStyle = .overCurrentContext
        materialPicker.modalTransitionStyle = .crossDissolve
    
        // present the controller
        present(materialPicker, animated: true, completion: nil)
    }
    

    Bonus tip:

    To make your overlay appear to slide up from the bottom like a drawer, set

    materialPicker.modalTransitionStyle = .coverVertical
    

    then constrain your views in your overlay view controller a comfortable height from the bottom and set the background color of the view controllers view to UIColor.clear.

    If you want to darken the AR view while your overlay is displayed you can set the background color to a black color with an opacity/alpha value of approximately 0.75.

    Something like this:

    self.view.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.75)
    

    or in the storyboard:

    In the screenshot above I have a tableview pinned to the bottom and sides of the overlay view controllers view, and a height constraint of 300.

    When done this way you can still see the AR view behind the overlay view controller and the scene continues to render.

提交回复
热议问题