我有没有办法从AppleTV上的TVML中访问本地资产目录中包含的图像?
我注意到this example from Apple中的几个模板呼叫resource://
网址,这些网址是常用图片(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反复调用它们。
答案 0 :(得分:4)
我有一些成功直接链接到文件系统
<badge src=\"file:///<url to bundle>/<relative path to resource>/<icon>.png\" width=\"50\" height=\"50\" />
来自url to bundle
的{{1}},NSBundle.mainBundle().bundleURL.absoluteString
根据您的设置,例如。 relative path
,resources
,...和images
以及您在徽章上展示的图片。
从icon
拉出目前还没有结果,但后来我还在训练中。 :-D
答案 1 :(得分:0)
我认为命名空间为resource
的图标由操作系统本身提供,无法修改。这只是一种预感,我还没有验证过。
答案 2 :(得分:0)
感谢@Baa,真的帮助了我!只是想添加一下,以便在JS端引用包的路径,我需要在appController(_ appController: TVApplicationController, evaluateAppJavaScriptIn jsContext: JSContext)
函数内的AppDelegate.swift文件中添加以下Swift代码(可能需要手动添加,如果您看不到):
jsContext.setObject(Bundle.main.bundleURL.absoluteString, forKeyedSubscript: "BUNDLE_URL" as NSCopying & NSObjectProtocol)
然后在JS端,我可以使用以下内容从捆绑包中加载静态图片:
const imageFromBundle = `${BUNDLE_URL}myImageName.png`;
请注意,据我所知,file:///
前缀是不必要的,没有它,加载捆绑的图像对我来说很好。