iOS 14中的可变字体



以下代码允许创建具有不同权重的字体。

func makeFont(weight: CGFloat, size: CGFloat) -> UIFont {
var attributesDict = [String: Any]()
attributesDict["Weight"] = weight
/* Rubik-Light - is a variable font */
let fontDescriptor = UIFontDescriptor(
fontAttributes: [
UIFontDescriptor.AttributeName.name : "Rubik-Light",
kCTFontVariationAttribute as UIFontDescriptor.AttributeName : attributesDict
]
)
return UIFont(descriptor: fontDescriptor, size: size)
}

它在ios 13及以下版本上运行良好,但在ios 14上不起作用。有什么解决办法吗?

已解决。iOS 14期望属性ID而不是其名称("Weight"(。

因此,attributeDict应该是这样的:

var attributesDict = [NSNumber: Any]()
attributesDict[NSNumber(value: 2003265652)] = weight

属性ID可以如下获得:

let variationAxes = (CTFontCopyVariationAxes(ctFont)! as Array)

相关内容

  • 没有找到相关文章

最新更新