我正在使用 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/