Pla*_*ble 2 javascript apple-tv tvos tvml tvjs
是否可以使用TVML创建动态模板/页面而不依赖Apple的标准模板?
假设我想要创建一个模板,其中有两个图像彼此相邻,并且在这些图像的顶部有几个我希望根据某些参数定位的文本字段.
我可以创建一个模板/视图我UIKit并从JS填充它作为替代?
我该怎么做?
小智 6
我认为你所说的是"divTemplate"的混合,它恰好存在于你可以使用你想要的任何布局而没有预定义的结构或位置,并使用本机代码来定义你自己的自定义TVML元素.
从Apple的文档中可以看出,"所包含的元素没有内置布局.使用TVML样式中列出的样式属性来个性化div模板内部的元素." 这是为完全免费的形式通过手元件布局.
至于另一条路径:向TVML添加UIKit视图的方法是定义一个自定义元素.这就是TVML系统如何知道您的自定义视图应该在TVML"页面"中的位置.如果你走这条路,你会想要阅读TVMLKit,而不仅仅是TVML和TVJS.您创建了一个符合TVInterfaceCreating协议的类,可能创建一个子类TVViewElement(如果其中一个现有类不足以满足您的需要),使用注册元素[TVElementFactory registerViewElementClass: [MyTVViewElement class] forElementName:@"mycustomelement" ]并注册您的TVInterfaceCreating类[[TVInterfaceFactory sharedInterfaceFactory] setExtendedInterfaceCreator: myInterfaceCreator].
所以我看到它的方式,你可以使用divTemplate和大量精心设计的样式信息完全没有任何自定义代码或UIView对象,或者你可以为你的部分制作一个或少量的自定义元素谈论.我不知道你是否可以创建一个本身就是自定义元素的新"模板" - 但这是我还没有尝试过的东西.
如果您决定沿着本机代码路径走下去,并且发现与TVViewElement相关的API不够丰富,无法在JavaScript和自定义视图之间进行协调,那么您可能还需要阅读JavaScriptCore API.这些允许您通过JavaScript通过JSContext上的API公开任意本机支持的功能.在TVML应用程序中,通过实现协议中的- appController:(TVAppController *) evaluateAppJavaScriptInContext:(JSContext *)方法,一个钩住所有这一切的好地方TVApplicationControllerDelegate.