ios - 在 CoreML VNCoreMLRequest 之前触发时 ActivityIndi​​cator 不显示

标签 ios swift grand-central-dispatch uiactivityindicatorview coreml

我正在使用 swift ActivityIndi​​cator : https://github.com/ninjaprox/NVActivityIndicatorView

func runMLModel(image: CIImage, completion: @escaping ([MLMultiArray]) -> Void){
     let request = VNCoreMLRequest(model: myModel) { (request, error) in
            guard let results = request.results as? [VNCoreMLFeatureValueObservation] else {
                fatalError("Model failed to process image")
            }
            //Do work here get mlData var
            completion(mlData)
        }

        let handler = VNImageRequestHandler(ciImage: image)

        do {
            try handler.perform([request])
        }catch {
            print(error)
        }
}

func buttonPressedToDoMLWork(){

     self.startAnimating(CGSize(width: 200, height: 200), message: "loading", type: NVActivityIndicatorType.audioEqualizer)  
     DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()) {
        NVActivityIndicatorPresenter.sharedInstance.setMessage("Authenticating...")

    }
    // Activity Indicator should be showing up here
    // but nothing is displayed
    runMLModel(image: myImage, completion: { (mlData : [MLMultiArray]) in

            print("got data")

            //indicator only shows up NOW.. after printing
            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
                self.stopAnimating(nil)

            }        
        })
    }
}

CoreML 模块内的代码似乎覆盖了在主 DispatchQueue 上启动 NVAcitivityIndi​​catorPresenter 的重要性。

有办法让这个该死的指示器在 MLRequest 被触发之前显示出来吗?

最佳答案

将您的 rumMlmodel 放入延迟函数中,不要在异步任务中添加事件代码。之后它将显示您的事件。延迟应该在 0.4 - 0.6 左右

关于ios - 在 CoreML VNCoreMLRequest 之前触发时 ActivityIndi​​cator 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51566527/

相关文章:

ios - 在 SpriteKit/Swift 中显示 GADBannerView 的最佳方式

ios - Storyboard中的 View Controller 在哪里启动?

ios - 如何在 Swift 中创建连接超时?

ios - 你能在没有死锁的情况下从并发线程调用 dispatch_sync 吗?

cocoa - 如何指定 NSDictionary 的keysOfEntriesPassingTest 所需的 block 对象/谓词?

multithreading - 在多个线程上读/写自定义对象

ios - Itune conect Warning For iOS 9 Application OS-

javascript - 在javascript中检测是webview还是外部浏览器

ios - 卡在Apple的SwiftUI教程第5章(更新App数据)

ios - 检查单元格是否完全显示在 Collection View 中