Sprite Kit UIActivityIndi​​cator 不会停止动画

Sprite Kit UIActivityIndicator won't stop animating

我正在尝试预加载一组纹理图集,在此期间显示 UIActivityIndi​​cator。加载纹理后,我想使用 .stopAnimating() 方法停止 activity 指示器。我插入了断点,发现编译器确实到达了 .stopAnimating() 方法,但是没有任何反应...指示器继续...

我在这里做错了什么?

class Menu: SKScene {

var activityInd: UIActivityIndicatorView!

 override func didMoveToView(view: SKView) {

    activityInd = UIActivityIndicatorView(activityIndicatorStyle: .WhiteLarge)
    activityInd.center = CGPointMake(self.frame.midX, self.frame.midY)
    activityInd.startAnimating()
    scene!.view?.addSubview(self.activityInd)

    SKTextureAtlas.preloadTextureAtlases([saxAtlas, saxIdleAtlas, drumAtlas, drumIdleAtlas, pianoAtlas, pianoIdleAtlas, bassAtlas]) { () -> Void in
            self.activityInd.stopAnimating()
        }
}

通常当您想要停止 activity 指标时,您只需调用 removeFromSuperview(),因为让静态 activity 指标坐在那里什么都不做是不好的,仅此而已 stopAnimating()给你。

你也应该在主线程上调用这个方法,因为 preloadTextureAtlases 是一个后台任务,任何前缀为 'UI' 的东西都需要在主线程上调用 运行 .

SKTextureAtlas.preloadTextureAtlases([saxAtlas, saxIdleAtlas, drumAtlas, drumIdleAtlas, pianoAtlas, pianoIdleAtlas, bassAtlas]) { () -> Void in

    dispatch_async(dispatch_get_main_queue()) { () -> Void in
        self.activityInd.stopAnimating()
    }            

}