我正在尝试预加载纹理图集数组,在此期间显示 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()
}
}
最佳答案
通常,当你想停止一个事件指示器时,你只需调用 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()
}
}
关于swift - Sprite Kit UIActivityIndicator 不会停止动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34910334/