我正在构建一个 Apple WatchOS 2 应用程序,该应用程序使用生成的图像进行连续动画处理。
因为这些不能与应用程序捆绑,所以它们是在 InterfaceController 中生成的,然后设置为在 watch 上显示,如下所示:
self.imageGroup?.setBackgroundImage(self.image)
到目前为止,我一直以每秒 1 张图像的速率生成这些图像,这感觉相当安全,但显然给出了 1fps 的非常低的帧速率。现在我想知道这可以改进多少?
我测量了 UIImages 本身的生成速度,这是相当低的 0.017 秒。这些图像的大小相当一致,也都在 10000 字节左右。如果没有进一步的延迟,那会给我一个更可接受的性能,大约 58fps。
我的问题是 - 是否存在蓝牙与手机通信的典型速度,我可以将其与图像大小进行比较以确定实际的帧速率?
或者 - 我假设在发生这种情况时调用 setBackgroundImage
不会阻塞主线程。有什么方法可以让我知道实际设置需要多长时间?
最佳答案
Apple 没有记录这种速度,因为它在很大程度上取决于连接强度。由于用户不需要将 watch 和手机放在一起,因此用户距离越远(或手机和 watch 之间的物体类型越远),传输速度就越慢。
你的图像是 10 KB,你想每秒发送 58 张图像,所以每秒 580 KB 或 .58 MB?数据量听起来并非不切实际(尽管这会耗尽电池电量)。但是,两个设备之间的每次网络调用都会产生一些开销。这些图像需要实时发送吗?否则,如果您最初可以延迟 1-2 秒,然后将一组 58 张图像一起批处理,您可以将它们在 watch 上制作动画,那么您可能会获得更好的性能。您每秒只会有 1 个网络调用,这对于设备来说比每秒 58 个调用更易于管理。
关于ios - 使用 watchOS 2,我可以多快在 iPhone 和 Apple Watch 之间发送 UIImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32527366/