ios - Apple Watch - 慢速图像动画第一次

标签 ios swift watchkit apple-watch watchos-2

我正在为 Apple Watch 构建一个小应用程序。我里面有一个组和一个标签。我想做的是:

  • 组的动画背景图片
  • 在图像动画结束后淡入标签

我的代码基本上是这样的:

        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 block 动画时,当我通过点击表冠离开应用程序并通过双击它返回时,dispatch_after block 没有被触发,或者背景动画第一次调用时没有正确呈现(我认为是第二次,因为我尝试在调度 block 中添加一个断点,并且每次测试时它都会触发)。 我正在运行 watchOS2,所以这可能与操作系统当前所处的 Beta 状态有关?

最佳答案

我遇到了和你一样的问题。

发生这种情况是因为在您第一次尝试时, watch 需要时间来加载图像。苹果也没有给我们任何“预加载”方法,所以我想出了一些解决方法: 何时显示我的 Controller :

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 - Apple Watch - 慢速图像动画第一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414695/

相关文章:

ios - undefined symbol : _OBJC_CLASS_$_WKInterfaceController error after updating Xcode to version 11. 1

iphone - 如何在 Objective C 中将好友标记为 Facebook 中的用户帖子

ios - 如何使用自定义键盘 iOS 发送图像

ios - 如何打开watchos的网址

swift - 无法在表格中毫无问题地显示多个文本标签

swift - 如何从 userNotificationCenter 中读取内容 - Swift

watchkit - 如何在 watchkit 中制作圆形 WKInterfaceButton?

ios - SwiftUI - 如何在我的 View 中调用函数?

iphone - webViewDidStartLoad 请求 URL 未设置为正在加载的 URL

快速 NSTimer 用户信息