在我的TVML应用程序中,我可以使用tv-text-style:none设置字体样式属性,例如字体大小和字体粗细,但是我无法设置字体系列属性,该属性似乎被忽略了:
var Template = function() { return `<?xml version="1.0" encoding="UTF-8" ?>
<document>
<head>
<style>
.customText {
tv-text-style: none;
tv-position: center;
color: white;
font-size: 40px;
font-weight: bold;
font-family: Courier;
}
</style>
</head>
<paradeTemplate>
...
<listItemLockup>
<title>Title</title>
<relatedContent>
<divTemplate>
<title class="customText">abcABC</title>
</divTemplate>
</relatedContent>
</listItemLockup>
...
我可以设置与系统字体系列不同的字体系列吗?
感谢您的帮助,
卢卡
如果要为标题使用自定义字体,则应实现将使用任何字体的自定义TVViewElement
。首先,您需要实现自己的TVInterfaceFactory
,可以这样做(适用于tvOS 2的Swift 9解决方案):
import UIKit
import TVMLKit
class MyFactory: TVInterfaceFactory {
override func viewForElement(element: TVViewElement, existingView: UIView?) -> UIView? {
switch element {
case let element as MyText where element.elementName == "myCustomText":
let view = MyTextView(frame: CGRectMake(0,0,100,50))
view.text = "my text"
return view
default:
break
}
return nil
}
}
之后,您需要实现自定义 TVML 项目:
class MyText: TVTextElement {
override var elementName: String {
return "myCustomText"
}
var text: String? {
guard let textValue = attributes?["text"] else { return nil }
return textValue
}
}
现在你需要为你的TVTextElement实现UIView:
class MyTextView: UIView {
var label: UILabel!
override init(frame: CGRect) {
super.init(frame: frame)
}
var text : String {
get {
return self.text
}
set(value) {
self.label = UILabel(frame: self.frame)
self.label.text = value
self.label.textColor = UIColor.whiteColor()
self.label.font = UIFont(name: "Your custom font", size: 20.0)
self.addSubview(self.label)
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
现在,您可以在TVML中使用自定义项目,如下所示:
<myCustomText text="hello world"></myCustomText>
另外,不要忘记在didFinishLaunchingWithOptions
方法中注册您的自定义项目:
TVInterfaceFactory.sharedInterfaceFactory().extendedInterfaceCreator = MyFactory()
TVElementFactory.registerViewElementClass(MyText.self, forElementName: "myCustomText")
font-family
现在可以在TVML中使用。无需再使用 TVInterfaceFactory
进行自定义字体支持。
例:
tv-text-style: 'none'
font-family: 'Times New Roman'
Apple TV 标记语言参考:字体系列