ios – 苹果手表 – 第一次缓慢的图像动画

前端之家收集整理的这篇文章主要介绍了ios – 苹果手表 – 第一次缓慢的图像动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在构建一个苹果手表的小应用程序.我里面有一个Group和一个Label.我要做的是:

>动画组的背景图像
>图像动画结束后,淡入标签

我的代码看起来基本上是这样的:

group.setBackgroundImageNamed("show_back-");
        group.startAnimatingWithImagesInRange(NSMakeRange(0,39),duration: 1.5,repeatCount: 1);
        let delayTime = dispatch_time(DISPATCH_TIME_NOW,Int64(1.5 * Double(NSEC_PER_SEC)))
        dispatch_after(delayTime,dispatch_get_main_queue()) { () -> Void in
            self.animateWithDuration(1) { () -> Void in
                self.label.setAlpha(1)
            };
        };

问题是,第一次触发序列,图像动画似乎运行速度慢于1.5秒,因为标签在图像停止改变之前开始衰落.如果在应用程序运行时再次触发,则一切正常工作.我想它与图像预加载或某些东西有关.

如何使其一致工作?我找不到任何类型的回调图像序列动画结束订阅.

编辑
另一个我注意到的一个问题:当bg从dispatch_after块中动画化时,还有另外一个例子,当我通过点击表冠离开应用程序并通过双击它返回时,dispatch_after块不被触发,或者背景动画在第一次被调用时不能正确渲染(我认为第二个,因为我尝试在调度块中添加一个断点,并在每次测试时触发它).
我正在运行watchOS2,所以也许这与操作系统目前处于beta状态有关?

解决方法

我遇到了同样的问题.

这是因为您第一次尝试时,手表需要时间才能加载图像.苹果也没有给我们任何“预加载”的方法,所以我想出了一些工作:
当我的控制器显示时:

func willActivate()

我在后台播放动画序列,这样当我的用户点击它的图像已经加载.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)) { [weak self] in
            if let uSelf = self {
                uSelf.statusAnimationImage.setImageNamed("my image name")
                uSelf.statusAnimationImage.startAnimatingWithImagesInRange(NSMakeRange(0,359),duration: 0.5,repeatCount: 1)
            }
        }

这是我找到解决这个问题的最好办法,它适用于我.

猜你在找的iOS相关文章