我尝试在SwiftUI文本中表示分母大于9的分数。
我可以使用单独的元素并应用偏移量来实现这一点,但由于分数是动态变化的,所以这有点混乱。
有没有一种方法可以使用attributedText来实现这一点?
我遇到了这个UIFont扩展,它带有一些过时的方法,我想知道是否有类似的方法可以用于SwiftUI:
extension UIFont {
static func fractionFont(ofSize pointSize: CGFloat) -> UIFont {
let systemFontDesc = UIFont.systemFont(ofSize: pointSize).fontDescriptor
let fractionFontDesc = systemFontDesc.addingAttributes(
[
UIFontDescriptor.AttributeName.featureSettings: [
[
UIFontDescriptor.FeatureKey.featureIdentifier: kFractionsType,
UIFontDescriptor.FeatureKey.typeIdentifier: kDiagonalFractionsSelector,
], ]
] )
return UIFont(descriptor: fractionFontDesc, size:pointSize)
}
}
2条答案
按热度按时间ie3xauqp1#
UIFont
与CTFont
是免费桥接的,这意味着您可以通过说出as CTFont
将UIFont
强制转换为CTFont
。SwiftUI的Font
有一个初始化器,它接受CTFont
。因此,使用您发布的
fractionFont(ofSize:)
方法,此Playground代码:产生以下结果:
u5i3ibmn2#
在此基础上,这里有一个没有弃用的版本,它接受
UIFont.TextStyle
作为参数,允许您简单地执行以下操作:以下是您需要的扩展: