我正在尝试预加载纹理图集数组,在此期间会显示UIActivityIndicator。加载纹理后,我想使用.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()
}
}
答案 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()
}
}