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

标签 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()
        }
}

最佳答案

通常,当你想停止一个事件指示器时,你只需调用 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 UIActivityIndi​​cator 不会停止动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34910334/

相关文章:

ios - AnchroPoint x :0, y:0 不适用于方程式

Swift Sprite Kit 开启触控功能

sprite-kit - SpriteKit 检测范围

ios - 启动和停止 indicatorView 并 swift 将其放在中心 tableView 中

ios - 搜索时的 UIActivtyIndi​​cator

ios - 如何从 UITableView 部分 Swift 3 中删除重复项

ios - 在 iOS SceneKit 中更新几何表面的正确方法是什么?

sprite-kit - 限制 SpriteKit 帧率

ios - 事件指示器直到加载下一个 View

swift - Firebase Events 中的自定义事件数据