UIFontDescriptor.SystemDesign 指定系统字体

iOS App 的 4 種系統字體

其中,UIKit & system font 有说到:

以 UIFontDescriptor.SystemDesign 選擇想要的系統字體,跟剛剛 SwiftUI 的例子一樣,選項有 .default,.monospaced,.rounded & .serif 四種。不過它的程式比 SwiftUI 複雜,我們必須先產生 UIFontDescriptor,然後再呼叫它的 function withDesign(_:),最後在生成 UIFont 時再傳入 UIFontDescriptor。

1
2
3
if let fontDescriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: .largeTitle).withDesign(.rounded) {
let font = UIFont(descriptor: fontDescriptor, size: 0)
}

值得注意的,以 init(descriptor:size:) 生成 UIFont 時,size 傳入 0 生成的字體大小將為 UIFontDescriptor 設定的 text style,size 大於 0 時字體大小則以 size 的數字為準。

如果想要產生固定大小的 SF Mono,也可以採用以下比較精簡的寫法,呼叫 function monospacedSystemFont(ofSize:weight:) & monospacedDigitSystemFont(ofSize:weight:)。

1
2
let font1 = UIFont.monospacedSystemFont(ofSize: 20, weight: .bold)
let font2 = UIFont.monospacedDigitSystemFont(ofSize: 20, weight: .bold)

上面方法在 UIFontDescriptor.SystemDesign 中也有提到。


UIFontDescriptor.SystemDesign 指定系统字体
https://wonderhoi.com/2024/10/31/UIFontDescriptor.SystemDesign-指定系统字体/
作者
wonderhoi
发布于
2024年10月31日
许可协议