0

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)
    }
}
4

1 に答える 1

1

UIFontは toll-free-bridge で と接続されています。これは、 と言ってaを a にCTFontキャストできることを意味します。また、SwiftUIには、.UIFontCTFontas CTFontFontCTFont

したがって、fractionFont(ofSize:)投稿したメソッドを使用して、このプレイグラウンド コード:

PlaygroundPage.current.setLiveView(
    Text("The fraction 21/345 is rendered nicely.")
        .font(Font(UIFont.fractionFont(ofSize: UIFont.systemFontSize) as CTFont))
        .padding()
)

次の結果が生成されます。

文字列

于 2022-03-05T07:30:56.520 に答える