2

我有什么方法可以从 AppleTV 上的 TVML 中访问本地资产目录中包含的图像?

我注意到此示例中的几个模板来自 Apple调用resource://URL,它们是常用图像(有关开发表单的更多信息)。这是一个使用云符号呈现的示例按钮:

<buttonLockup>
  <badge src="resource://button-cloud" class="whiteBadge" />
  <title>Title 3</title>
</buttonLockup>

TVML 云按钮

我尝试指向我自己的一些资源,而不是button-cloud但没有任何成功。

我已经能够通过链接到外部提供的图像来更改这些按钮上的图标,如下所示:

<buttonLockup>
  <badge src="http://localhost:5000/static/heartFull.png" class="whiteBadge" width="50" height="50"/>
  <title>Title 3</title>
</buttonLockup>

由于这些按钮将在我的应用程序中重复使用,因此我宁愿在本地加载它们,也不愿在可能的情况下通过 HTTP 重复调用它们。

4

3 回答 3

4

我在直接链接到文件系统方面取得了一些成功

<badge src=\"file:///<url to bundle>/<relative path to resource>/<icon>.png\" width=\"50\" height=\"50\" />

with... url to bundlefrom NSBundle.mainBundle().bundleURL.absoluteStringrelative path根据您的设置,例如。resources, images, ... icon以及您要在徽章上显示的图像。

到目前为止Assets.xcassets还没有成功,但我仍在训练中。:-D

于 2015-11-28T19:21:55.487 回答
0

谢谢@Baa,真的帮了我!只是想添加一下,以便在 JS 端引用包的路径,我需要将以下 Swift 代码添加到appController(_ appController: TVApplicationController, evaluateAppJavaScriptIn jsContext: JSContext)函数内的我的 AppDelegate.swift 文件中(可能需要手动添加,如果你没有看到它):

jsContext.setObject(Bundle.main.bundleURL.absoluteString, forKeyedSubscript: "BUNDLE_URL" as NSCopying & NSObjectProtocol)

然后在 JS 方面,我可以使用以下内容从包中加载静态图像:

const imageFromBundle = `${BUNDLE_URL}myImageName.png`;

请注意,据我所知,file:///前缀是不必要的,如果没有它,加载捆绑的图像对我来说效果很好。

于 2020-05-08T14:38:00.697 回答
0

我认为命名空间的图标resource是由操作系统本身提供的,不能修改。这只是一种预感,我还没有验证过。

https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/ATV_Template_Guide/ResourceValues.html

于 2017-11-25T20:27:04.967 回答