Apple Watch 不显示任何图像

0 ios swift apple-watch watchkit

我们在 Apple Watch 上无法显示图像时遇到问题,我们尝试了以下方法:

我们的图片位于apple watchkit扩展中,我们尝试将其放入缓存中:

let img = UIImage(named:"slider_r.png")
WKInterfaceDevice().addCachedImage(img!, name:"slider_r.png")
Run Code Online (Sandbox Code Playgroud)

一下子就崩溃了...

然后我们尝试在apple watchkit app上直接添加图片:没有资产。没有加载图片...

然后我们尝试将其放入图像中。资产也不起作用......我们目前没有想法......

谢谢 !

Joh*_*ers 6

好的,我已经使用 WatchKit 大约一个月了 - 以下是我所知道的:

  1. 将您的图像放入Watch 应用程序的资产目录会将其添加到 Watch 的捆绑包中。这将立即可用于使用 UIImage 的.setImageNamed("name").
  2. 将您的图像放入Watch Extension 的 Assets Catalog 中会将其添加到位于手机上的扩展包中。现在,要将其发送到手表,您必须首先从扩展中获取对图像的引用,然后使用WKInterfaceDevice().addCachedImage(image, name:).

此处查看 Apple 文档,以向 Watch 提供图像。这是文档setImage(_ image: UIImage?)

此方法更改正在显示的图像。使用此方法将图像从 WatchKit 扩展发送到 WatchKit 应用程序。调整图像界面对象的大小以适应新指定图像的大小。如果图像本身对于设备屏幕来说太大,则图像会被剪裁。

这不是你想要的。您希望将图像显式添加到缓存中,以便稍后使用。如果您setImage按上述方式使用,每次通话时它都会将图像从手机传输到手表,如果您在多个位置使用相同的图像或使用频率很高,这并不理想。您必须小心选择要在手表上缓存的图像。

使用我们现在知道的:

var img: UIImage = UIImage(named: "slider_r") // grabs the image from extension's bundle
WKInterfaceDevice().addCachedImage(img!, named: "slider_r") // adds to the Watch cache

myImageOutlet.setImageNamed("slider_r") // grabs the image from the Watch cache
Run Code Online (Sandbox Code Playgroud)
  • 确保资产目录包含在扩展的目标中,以便在运行时将图像正确放置在包中。
  • 不会需要包括扩展名(例如,“png格式”),在图像的名称。