聊聊 iOS16 中的三種新字體寬度樣式
前言
在 iOS 16 中,Apple 引入了三種新的寬度樣式字體到 SF 字體庫(kù)。
- Compressed
- Condensed
- Expend
UIFont.Width
Apple 引入了新的結(jié)構(gòu)體 UIFont.Width,這代表了一種新的寬度樣式。
目前已有的四種樣式。
- standard:我們總是使用的默認(rèn)寬度。
- compressed:最窄的寬度樣式。
- condensed:介于壓縮和標(biāo)準(zhǔn)之間的寬度樣式。
- expanded:最寬的寬度樣式。
SF 字體和新的寬度樣式
如何將 SF 字體和新的寬度樣式一起使用
為了使用新的寬度樣式,Apple 有一個(gè)新的 UIFont 的類(lèi)方法來(lái)接收新的 UIFont.Width 。
你可以像平常創(chuàng)建字體那樣來(lái)使用新的方法。
SwiftUI
更新:在 Xcode 14.1 中,SwiftUI 提供了兩個(gè)新的 API 設(shè)置這種新的寬度樣式。 width(_:) 和 fontWidth(_:)。
目前(Xcode 16 beta 6),這種新的寬度樣式和初始值設(shè)定只能在 UIKit 中使用,幸運(yùn)的是,我們可以在 SwiftUI 中輕松的使用它。
有很多種方法可以將 UIKit 集成到 SwiftUI 。我將會(huì)展示在 SwiftUI 中使用新寬度樣式的兩種方法。
- 將 UIfont 轉(zhuǎn)為 Font。
- 創(chuàng)建 Font 擴(kuò)展。
將 UIfont 轉(zhuǎn)為 Font
我們從 在 SwiftUI 中如何將 UIFont 轉(zhuǎn)換為 Font[1] 中了解到,F(xiàn)ont 有初始化方法可以接收 UIFont 作為參數(shù)。
步驟如下
- 你需要?jiǎng)?chuàng)建一個(gè)帶有新寬度樣式的 UIFont。
- 使用該 UIFont 創(chuàng)建一個(gè) Font 。
- 然后像普通 Font 一樣使用它們。
- 創(chuàng)建帶有新寬度樣式的 UIFont。
- 用 UIFont 初始化 Font, 然后傳遞給 .font 修改。
創(chuàng)建一個(gè) Font 擴(kuò)展
這種方法實(shí)際上和將 UIfont 轉(zhuǎn)為 Font 是同一種方法。我們只需要?jiǎng)?chuàng)建一個(gè)新的 Font 擴(kuò)展在 SwiftUI 中使用起來(lái)更容易一些。
創(chuàng)建一個(gè)靜態(tài)函數(shù)傳遞 UIFont 需要的參數(shù)。然后,初始化 UIFont 和創(chuàng)建 Font 。
我們就可以像這樣使用了。
如何使用新的寬度樣式
你可以在你想使用的任何地方使用。不會(huì)有任何限制,所有的新寬度都有一樣的尺寸,同樣的高度,只會(huì)有寬度的變化。
這里是擁有同樣文本,同樣字體大小和同樣字體樣式的不同字體寬度樣式展示。
新的寬度樣式優(yōu)點(diǎn)
你可以使用新的寬度樣式在已經(jīng)存在的字體樣式上,比如 thin 或者 bold ,在你的 app 上創(chuàng)造出獨(dú)一無(wú)二的體驗(yàn)。
Apple 將它使用在他們的照片app ,在 "回憶'' 功能中,通過(guò)組合不同的字體寬度和樣式在標(biāo)題或者子標(biāo)題上。
這里有一些不同寬度和樣式的字體組合,希望可以激發(fā)你的靈感。
你也可以用新的寬度樣式來(lái)控制文本的可讀性。
下面的這個(gè)例子,說(shuō)明不同寬度樣式如何影響每行的字符數(shù)和段落長(zhǎng)度
下載這種字體
你可以在 Apple 字體平臺(tái)[2] 來(lái)下載這種新的字體寬度樣式。
下載安裝后,你將會(huì)發(fā)現(xiàn)一種結(jié)合了現(xiàn)有寬度和新寬度樣式的新樣式。
基本上,除了在模擬器的模擬系統(tǒng) UI 中,在任何地方都被禁止使用 SF 字體。請(qǐng)確保你在使用前閱讀并理解許可證。
參考資料
[1] 在 SwiftUI 中如何將 UIFont 轉(zhuǎn)換為 Font: ??https://www.jianshu.com/p/56ee0d1ea0e1.??
[2] Apple 字體平臺(tái): ??https://developer.apple.com/fonts/.??