ios - WatchKit:存储在App Group中的动画图片

标签 ios iphone swift animation watchkit

我正在使用 App Groups 来存储 NSData使用 UIImageJPEGRepresentation() 创建的 JPEG 图像.现在我想将该数组中包含的图像数据用作 WKInterfaceImage 的动画帧。实例。

我已成功存档我的 NSData来 self 的应用程序组的 JPEG 图像使用 NSKeyedUnarchiver ,现在我正在缓存传送动画所需的图像。

    var frames = ...
    for (index, frame) in enumerate(frames) {
        WKInterfaceDevice().addCachedImageWithData(frame, name: "frame" + String(index))
    }

    animationImage.setImageNamed("frame")
    animationImage.startAnimating()

不幸的是,这段代码似乎不起作用;当我打开相应的WKInterfaceController ,我只看到加载屏幕 2/3 分钟,而不是 Watch 上的“无法找到名为“frame”的图像 "控制台上的消息。我不能使用 Images.xcassets 文件夹来存储动画帧,因为它们是由应用程序动态生成的。

有人知道如何解决这个问题吗?

最佳答案

这确实有效,而且您的方法很合理。问题是在将缓存图像传输到 Watch 之前,您无法真正加载它们。这是一个有点棘手的情况。长话短说,您希望先将这些动态图像推送到 Watch 方式,然后再将它们添加到要显示的界面元素中。

对此的一个简单演示可能是将您的代码更改为以下内容:

let data = NSData() // obviously make this an image
WKInterfaceDevice().addCachedImageWithData(data, name: "example_image")

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(4.0 * Float(NSEC_PER_SEC))), dispatch_get_main_queue()) { [weak self] in
    if let strongSelf = self {
        strongSelf.animationImage.setImageNamed("example_image")
    }
}

Four seconds might not be enough time to transfer the image. You'll have to play with that value.

iOS 模拟器的传输行为非常奇怪。在传输过程中,它会阻塞 Watch App 的主线程。希望这实际上不会发生在设备的主线程上。

关于ios - WatchKit:存储在App Group中的动画图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29052535/

相关文章:

ios - Xmpp IOS 多用户聊天。我没有找到接受群组邀请的方法?我怎样才能接受传入的邀请

ios - Json 有值但它返回 null/nill

iphone - 将背景button2更改为button1 iPhone

arrays - swift 3 数组太长,太复杂,无法解决

ios - xcode 属性检查器文本值未正确显示(文本太长)

iOS - iFrame 中的原生滚动

ios - XCode仍指示构建未运行时正在运行

iphone - CAKeyframeAnimation - 示例

ios - 无权快速访问视频文件路径

ios - 在展开 Optional 值时意外发现 nil? swift 4