【问题标题】:Unable to access WatchKit app assets无法访问 WatchKit 应用资产
【发布时间】:2016-06-30 10:09:24
【问题描述】:

我需要在我的 WatchOS 应用及其复杂功能中使用一些图像。如果我将它们放在 watchkit 应用程序目标组内的资产目录中,我无法从我的 WatchOS 应用程序访问它们,但我可以在扩展资产目录中访问它们。

这是测试图像:

这是我测试可访问性的方式:

  • 我将一个 png 文件放入了 watchkit 应用程序资源中。 XCode 创建了一个图片集广告,将图片放在 2x 插槽中。
  • 我从属性检查器复制了名称CircularSmallRingImage42mm
  • 我在初始InterfaceControllerawakeWithContext() 方法中添加了以下代码:

    if let image = UIImage(named: "CircularSmallRingImage42mm") {
        NSLog("works")
    } else {
        NSLog("doesn't work")
    }
    
  • 我重置了 Apple Watch 模拟器上的内容和设置。

  • 我在 iPhone 6s Plus + Apple Watch 42mm 模拟器上清理并运行了 watchkit 应用程序方案。 不起作用。
  • 我删除了图像集并重复了该过程,但这次我将图像放到了应用扩展的资产目录中。 有效。

我的 watchkit 应用组中的资产目录仅针对 watchkit 应用。我的 watchkit 应用扩展组中的资产目录仅针对 watchkit 应用扩展。在我所见的任何地方,人们似乎都建议将静态内容放入与 Watch App 目标捆绑的资产目录中,以便将其存储在手表本身上。

为什么我无法访问图像?难道我做错了什么? watchkit app bundle 不是存储静态文件的推荐位置吗?

【问题讨论】:

    标签: xcode swift watchkit watchos-2 apple-watch-complication


    【解决方案1】:

    根据图像的名称,听起来它与并发症有关。

    复杂图像属于 WatchKit 扩展资产目录,因为复杂图像是您应用的“扩展”。无需加载或运行您的应用程序即可使复杂功能发挥作用。

    如果并发症图像存储在并发症组中,您还需要按组名引用它们。例如,

    UIImage(named: "Complication/Circular")
    

    有关详细信息,请参阅 Apple 开发者论坛上的 this thread

    【讨论】:

    • 是的,我正在尝试构建一个复杂功能,但出于测试目的,我只是将图像放入资产中,从而创建了一个图像集。我正在从自定义控制器调用方法,因此测试场景应该与并发症无关。由于与该线程中提到的尺寸要求不一致,我也在避免复杂资产。我按照这个人的指示:link,声称图像在安装过程中被转移到手表上。他错了吗?
    • 该博客条目是在 watchOS 1 中写回的,当时手表扩展程序在 iPhone 上运行。不再有任何图像传输,因为应用程序和扩展资产都已经位于手表上。正如您已经通过测试发现的那样,这些图像属于扩展资产目录。
    • 我现在明白我必须使用扩展资产,但我仍然不明白为什么 wachkit 应用资产无法访问。
    • 将应用程序资产视为系统在加载时使用的静态资源(例如故事板资源、应用程序图标),将扩展程序资产视为运行时在您的代码直接访问它们时使用的动态资源。
    【解决方案2】:

    iphone 应用程序和手表应用程序的资产完全不同,您无法将图像访问到应用程序资产文件夹以观看扩展程序。您必须添加与手表套件兼容的新图像

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      相关资源
      最近更新 更多