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

时间:2016-01-20 20:55:22

标签: swift sprite-kit uiactivityindicatorview sktextureatlas

我正在尝试预加载纹理图集数组,在此期间会显示UIActivityIndi​​cator。加载纹理后,我想使用.stopAnimating()方法停止活动指示器。我插入了断点,发现编译器确实进入了.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()
        }
}

1 个答案:

答案 0 :(得分:1)

通常当你想要停止一个活动指示器时,你只需要调用removeFromSuperview(),因为静止活动指示器在那里什么也不做是没有用的,这就是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()
    }            

}