访问 TVML 中的资产目录图像
Access Asset Catalog images in TVML
我有什么方法可以从 AppleTV 上的 TVML 中访问本地资产目录中包含的图像吗?
我注意到 this example from Apple call out to resource://
URLs, which are common use images (more info on the dev forms 中的几个模板。这是一个使用云符号呈现的示例按钮:
<buttonLockup>
<badge src="resource://button-cloud" class="whiteBadge" />
<title>Title 3</title>
</buttonLockup>
我尝试指向我自己的一些资源而不是 button-cloud
但没有成功。
我已经能够通过链接到外部提供的图像来更改这些按钮上的图标,如下所示:
<buttonLockup>
<badge src="http://localhost:5000/static/heartFull.png" class="whiteBadge" width="50" height="50"/>
<title>Title 3</title>
</buttonLockup>
由于这些按钮将在我的整个应用程序中重复使用,如果可能的话,我宁愿在本地加载它们也不愿通过 HTTP 重复调用它们。
我在直接链接到文件系统方面取得了一些成功
<badge src=\"file:///<url to bundle>/<relative path to resource>/<icon>.png\" width=\"50\" height=\"50\" />
with... url to bundle
from NSBundle.mainBundle().bundleURL.absoluteString
, relative path
根据您的设置,例如。 resources
、images
、... icon
好吧,你的图片要显示在徽章上。
从 Assets.xcassets
拉动到目前为止还没有成功,但我仍在训练中。 :-D
我认为resource
命名空间的图标是由OS本身提供的,不能修改。这只是预感,我还没有验证。
谢谢@Baa,真的帮了我大忙!只是想添加一点,以便在 JS 端引用包的路径,我需要将以下 Swift 代码添加到我的 AppDelegate.swift 文件中的 appController(_ appController: TVApplicationController, evaluateAppJavaScriptIn jsContext: JSContext)
函数中(可能需要手动添加,如果你没有看到它):
jsContext.setObject(Bundle.main.bundleURL.absoluteString, forKeyedSubscript: "BUNDLE_URL" as NSCopying & NSObjectProtocol)
然后在 JS 端,我可以使用以下代码从包中加载静态图像:
const imageFromBundle = `${BUNDLE_URL}myImageName.png`;
请注意,据我所知,file:///
前缀是不必要的,没有它加载捆绑图像对我来说工作正常。
我有什么方法可以从 AppleTV 上的 TVML 中访问本地资产目录中包含的图像吗?
我注意到 this example from Apple call out to resource://
URLs, which are common use images (more info on the dev forms 中的几个模板。这是一个使用云符号呈现的示例按钮:
<buttonLockup>
<badge src="resource://button-cloud" class="whiteBadge" />
<title>Title 3</title>
</buttonLockup>
我尝试指向我自己的一些资源而不是 button-cloud
但没有成功。
我已经能够通过链接到外部提供的图像来更改这些按钮上的图标,如下所示:
<buttonLockup>
<badge src="http://localhost:5000/static/heartFull.png" class="whiteBadge" width="50" height="50"/>
<title>Title 3</title>
</buttonLockup>
由于这些按钮将在我的整个应用程序中重复使用,如果可能的话,我宁愿在本地加载它们也不愿通过 HTTP 重复调用它们。
我在直接链接到文件系统方面取得了一些成功
<badge src=\"file:///<url to bundle>/<relative path to resource>/<icon>.png\" width=\"50\" height=\"50\" />
with... url to bundle
from NSBundle.mainBundle().bundleURL.absoluteString
, relative path
根据您的设置,例如。 resources
、images
、... icon
好吧,你的图片要显示在徽章上。
从 Assets.xcassets
拉动到目前为止还没有成功,但我仍在训练中。 :-D
我认为resource
命名空间的图标是由OS本身提供的,不能修改。这只是预感,我还没有验证。
谢谢@Baa,真的帮了我大忙!只是想添加一点,以便在 JS 端引用包的路径,我需要将以下 Swift 代码添加到我的 AppDelegate.swift 文件中的 appController(_ appController: TVApplicationController, evaluateAppJavaScriptIn jsContext: JSContext)
函数中(可能需要手动添加,如果你没有看到它):
jsContext.setObject(Bundle.main.bundleURL.absoluteString, forKeyedSubscript: "BUNDLE_URL" as NSCopying & NSObjectProtocol)
然后在 JS 端,我可以使用以下代码从包中加载静态图像:
const imageFromBundle = `${BUNDLE_URL}myImageName.png`;
请注意,据我所知,file:///
前缀是不必要的,没有它加载捆绑图像对我来说工作正常。