成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊 iOS16 中的三種新字體寬度樣式

移動開發 iOS
在 Xcode 14.1 中,SwiftUI 提供了兩個新的 API 設置這種新的寬度樣式。 width(_:) 和 fontWidth(_:)。

前言

在 iOS 16 中,Apple 引入了三種新的寬度樣式字體到 SF 字體庫。

  1. Compressed
  2. Condensed
  3. Expend

圖片

UIFont.Width

Apple 引入了新的結構體 UIFont.Width,這代表了一種新的寬度樣式。

目前已有的四種樣式。

  • standard:我們總是使用的默認寬度。
  • compressed:最窄的寬度樣式。
  • condensed:介于壓縮和標準之間的寬度樣式。
  • expanded:最寬的寬度樣式。

圖片

SF 字體和新的寬度樣式

如何將 SF 字體和新的寬度樣式一起使用

為了使用新的寬度樣式,Apple 有一個新的 UIFont 的類方法來接收新的 UIFont.Width 。

class UIFont : NSObject {
class func systemFont(
ofSize fontSize: CGFloat,
weight: UIFont.Weight,
width: UIFont.Width
) -> UIFont
}

你可以像平常創建字體那樣來使用新的方法。

let condensed = UIFont.systemFont(ofSize: 46, weight: .bold, width: .condensed)
let compressed = UIFont.systemFont(ofSize: 46, weight: .bold, width: .compressed)
let standard = UIFont.systemFont(ofSize: 46, weight: .bold, width: .standard)
let expanded = UIFont.systemFont(ofSize: 46, weight: .bold, width: .expanded)

SwiftUI

更新:在 Xcode 14.1 中,SwiftUI 提供了兩個新的 API 設置這種新的寬度樣式。 width(_:) 和 fontWidth(_:)。

目前(Xcode 16 beta 6),這種新的寬度樣式和初始值設定只能在 UIKit 中使用,幸運的是,我們可以在 SwiftUI 中輕松的使用它。

有很多種方法可以將 UIKit 集成到 SwiftUI 。我將會展示在 SwiftUI 中使用新寬度樣式的兩種方法。

  1. 將 UIfont 轉為 Font。
  2. 創建 Font 擴展。

將 UIfont 轉為 Font

我們從 在 SwiftUI 中如何將 UIFont 轉換為 Font[1] 中了解到,Font 有初始化方法可以接收 UIFont 作為參數。

步驟如下

  1. 你需要創建一個帶有新寬度樣式的 UIFont。
  2. 使用該 UIFont 創建一個 Font 。
  3. 然后像普通 Font 一樣使用它們。

struct NewFontExample: View {
// 1
let condensed = UIFont.systemFont(ofSize: 46, weight: .bold, width: .condensed)
let compressed = UIFont.systemFont(ofSize: 46, weight: .bold, width: .compressed)
let standard = UIFont.systemFont(ofSize: 46, weight: .bold, width: .standard)
let expanded = UIFont.systemFont(ofSize: 46, weight: .bold, width: .expanded)

var body: some View {
VStack {
// 2
Text("Compressed")
.font(Font(compressed))
Text("Condensed")
.font(Font(condensed))
Text("Standard")
.font(Font(standard))
Text("Expanded")
.font(Font(expanded))
}
}
}

  • 創建帶有新寬度樣式的 UIFont。
  • 用 UIFont 初始化 Font, 然后傳遞給 .font 修改。

創建一個 Font 擴展

這種方法實際上和將 UIfont 轉為 Font 是同一種方法。我們只需要創建一個新的 Font 擴展在 SwiftUI 中使用起來更容易一些。

extension Font {
public static func system(
size: CGFloat,
weight: UIFont.Weight,
width: UIFont.Width) -> Font
{
// 1
return Font(
UIFont.systemFont(
ofSize: size,
weight: weight,
width: width)
)
}
}

創建一個靜態函數傳遞 UIFont 需要的參數。然后,初始化 UIFont 和創建 Font 。

我們就可以像這樣使用了。

Text("Compressed")
.font(.system(size: 46, weight: .bold, width: .compressed))
Text("Condensed")
.font(.system(size: 46, weight: .bold, width: .condensed))
Text("Standard")
.font(.system(size: 46, weight: .bold, width: .standard))
Text("Expanded")
.font(.system(size: 46, weight: .bold, width: .expanded))

如何使用新的寬度樣式

你可以在你想使用的任何地方使用。不會有任何限制,所有的新寬度都有一樣的尺寸,同樣的高度,只會有寬度的變化。

這里是擁有同樣文本,同樣字體大小和同樣字體樣式的不同字體寬度樣式展示。

圖片

新的寬度樣式優點

你可以使用新的寬度樣式在已經存在的字體樣式上,比如 thin 或者 bold ,在你的 app 上創造出獨一無二的體驗。

Apple 將它使用在他們的照片app ,在 "回憶'' 功能中,通過組合不同的字體寬度和樣式在標題或者子標題上。

圖片

這里有一些不同寬度和樣式的字體組合,希望可以激發你的靈感。

Text("Pet Friends")
.font(Font(UIFont.systemFont(ofSize: 46, weight: .light, width: .expanded)))
Text("OVER THE YEARS")
.font(Font(UIFont.systemFont(ofSize: 30, weight: .thin, width: .compressed)))

Text("Pet Friends")
.font(Font(UIFont.systemFont(ofSize: 46, weight: .black, width: .condensed)))
Text("OVER THE YEARS")
.font(Font(UIFont.systemFont(ofSize: 20, weight: .light, width: .expanded)))

圖片

你也可以用新的寬度樣式來控制文本的可讀性。

下面的這個例子,說明不同寬度樣式如何影響每行的字符數和段落長度

圖片

下載這種字體

你可以在 Apple 字體平臺[2] 來下載這種新的字體寬度樣式。

下載安裝后,你將會發現一種結合了現有寬度和新寬度樣式的新樣式。

圖片

基本上,除了在模擬器的模擬系統 UI 中,在任何地方都被禁止使用 SF 字體。請確保你在使用前閱讀并理解許可證。

參考資料

[1] 在 SwiftUI 中如何將 UIFont 轉換為 Font: ??https://www.jianshu.com/p/56ee0d1ea0e1.??

[2] Apple 字體平臺: ??https://developer.apple.com/fonts/.??

責任編輯:姜華 來源: Swift社區
相關推薦

2009-07-28 08:55:35

Windows 7本地化字體

2023-04-13 07:41:14

RoCE技術RDMA

2023-10-13 00:00:00

Redis模塊空間對象

2011-04-08 11:13:50

CISCO IOS令牌桶雙桶

2011-01-18 15:35:59

jQueryJavaScriptweb

2023-06-04 17:11:13

iOSAndroidApple

2010-09-06 10:04:31

CSS樣式表

2009-05-07 15:02:42

OracleJoin查詢

2021-07-05 06:57:06

VMware vSph虛擬機磁盤

2023-03-07 08:25:39

探針Kubernetes

2024-07-01 12:42:58

2011-06-03 11:53:06

Spring接口

2022-12-06 23:32:47

CSS語言LCH

2010-05-11 14:08:50

MySQL數字類型

2010-09-08 13:29:48

CSS

2021-12-20 07:11:26

Java List排序 Java 基礎

2010-09-24 19:18:22

SQL索引

2018-03-28 16:10:23

閱讀源碼境界

2015-09-14 09:31:44

結對設計

2013-04-01 09:55:03

OpenStack存儲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久婷婷av| 国产在线观看不卡一区二区三区 | 黄a网 | 成人久久 | 一区二区在线不卡 | 欧美老妇交乱视频 | 九九热国产精品视频 | 国产欧美视频一区二区三区 | 91欧美激情一区二区三区成人 | 黄色毛片免费视频 | 91精品国产91久久久久游泳池 | 亚洲在线 | 亚洲免费一 | 亚洲福利网 | 久久大陆| 久久激情网| 亚洲精品一区二区 | 天天综合网天天综合 | 国产伦精品一区二区三区精品视频 | 人人九九精 | 狠狠干狠狠操 | 成在线人视频免费视频 | 久久国产精品久久国产精品 | 亚洲欧美中文日韩在线v日本 | 亚洲人在线播放 | 国产欧美精品一区二区 | 岛国av免费在线观看 | 亚洲网在线 | 中文字幕在线一区二区三区 | 日韩视频国产 | 美女黄网站视频免费 | 国产视频中文字幕 | 欧美福利久久 | 日本福利视频 | 一级黄色夫妻生活 | 久国产精品 | 日韩成人在线观看 | 国产欧美一区二区精品忘忧草 | 日韩免费福利视频 | 二区三区视频 | 国产美女在线看 |