在 TVML (tvOS) 中创建分层图像

Posted

技术标签:

【中文标题】在 TVML (tvOS) 中创建分层图像【英文标题】:Create Layered Image in TVML (tvOS) 【发布时间】:2015-10-08 06:24:57 【问题描述】:

我想使用 TVML 标记创建分层图像以在 tvOS 9.0 上使用。

这似乎应该是一个相对常见的问题,但似乎没有任何方法可以做到这一点(从 tvOS Beta 3 开始)。在 Apple TVML 演示应用中,它通过使用pre-compiled into a single .lsr file 的多层图像来实现这一点,而不是在标记中单独注明每一层。

可以使用layerutil CLI 程序编写 .lsr 文件的创建脚本,但这对于我正在尝试构建的应用程序将是一个巨大的麻烦,其中图像将是用户生成的内容。

相反,能够做这样的事情会很棒(注意src-layer1 属性,用于在基础src 之上添加额外的层):

<lockup>
  <img src="https://i.ytimg.com/vi/dQw4w9WgXcQ/mqdefault.jpg" src-layer1="https://server.com/path/to/overlay.png"  />
  <title>Rick Astley - Never Gonna Give You Up</title>
</lockup>

除了在服务器上来回编写大量脚本以生成 .lsr 文件之外,还有其他有效的方法吗?

更新 - 2015 年 10 月 21 日: 在 bottom of this documentation page,Apple 提供了一个非常适合此用途的复选标记叠加图像,称为 resource://button-play。但是似乎仍然没有办法在 TVML 中使用这个图标覆盖。 :-/

【问题讨论】:

明确地说,我认为没有办法做到这一点(至少从 tvOS 9.0 Beta 3 开始),但我想知道将来是否会改变。请不要回答“无法完成”。等 同意 - 这似乎最终会在代码中得到支持 【参考方案1】:

您可以使用overlay 在锁定中分层图像。

https://developer.apple.com/library/tvos/documentation/LanguagesUtilities/Conceptual/ATV_Template_Guide/CoumpoundDisplayElements.html#//apple_ref/doc/uid/TP40015064-CH18-SW3

<lockup>
  <img src="https://i.ytimg.com/vi/dQw4w9WgXcQ/mqdefault.jpg"  />
  <title>Rick Astley - Never Gonna Give You Up</title>
  <overlay style="padding:0;">
    <badge src="resource://overlay-checkmark" />
  </overlay>
</lockup>

【讨论】:

谢谢 CEM!我阅读了链接的文档,似乎没有任何方法可以控制位置,所以我的叠加复选标记最终指向图像的中间。是否有我遗漏的位置信息? 我还尝试创建自己的过度徽章图像,其大小与锁定背景 img 完全相同,然后将 src 设置为指向我的网络服务器上的完整覆盖,但它不会显示任何图像.尝试了一些变化,但没有运气。也许这里不允许? 这是一张图片,说明它在上面的 overlaybadge 示例之后是如何放置的:i.stack.imgur.com/Vemd7.png 让我们尝试将padding:0; 赋予style 属性为overlay 所以添加 padding:0 确实移动了复选标记,但它仍然没有到达角落:i.stack.imgur.com/nzRlx.png Weird。不过感谢您的所有帮助!【参考方案2】:

如果您在定位复选标记叠加层时仍然遇到问题,请尝试用透明度填充它,使其与视频缩略图的纵横比相同。

【讨论】:

感谢您的建议。这样做是完全合理的,所以我实际上是 tried that a while ago,但 TVML 不会为覆盖加载 HTTPS 提供的图像。

以上是关于在 TVML (tvOS) 中创建分层图像的主要内容,如果未能解决你的问题,请参考以下文章

TVML 动态添加项目?

如何在 asp.net 中创建分层结构

ValueError:长度不匹配:在熊猫数据框中创建分层列时,预期的轴有 0 个元素

Python Multiindex - 如何在只有时间作为索引的数据框中创建分层多索引?

带有 tvos 的菜单栏、图片和列表的主页 - tvml

在 pyspark 中创建训练集和测试集时,如何跨不同组进行分层抽样? [关闭]