前言在iOS16中,苹果在顺丰字体库中引入了三种全新的宽度样式字体。CompressedCondensedExpendUIFont.WidthApple引入了一个新的结构体UIFont.Width,它代表了一种新的宽度样式。目前有四种款式可供选择。标准:我们一直使用的默认宽度。compressed:宽度最窄的样式。condensed:介于condensed和standard之间的宽度样式。expanded:最宽的样式。SF字体和新宽度样式如何使用具有新宽度样式的SF字体为了使用新的宽度样式,Apple有一个新的UIFont类方法,它接受新的UIFont.Width。classUIFont:NSObject{classfuncsystemFont(ofSizefontSize:CGFloat,weight:UIFont.Weight,width:UIFont.Width)->UIFont}您可以像通常创建字体一样使用新方法。letcondensed=UIFont.systemFont(ofSize:46,weight:.bold,width:.condensed)letcompressed=UIFont.systemFont(ofSize:46,weight:.bold,width:.compressed)letstandard=UIFont.systemFont(ofSize:46,weight:.bold,width:.standard)letexpanded=UIFont.systemFont(ofSize:46,weight:.bold,width:.expanded)SwiftUI更新:在Xcode14.1中,SwiftUI提供了两个新的API设置这个新的宽度风格。宽度(_:)和字体宽度(_:)。目前(Xcode16beta6),这种新的宽度样式和初始化器仅在UIKit中可用,幸运的是,我们可以在SwiftUI中轻松使用它。有很多方法可以将UIKit集成到SwiftUI中。我将展示两种在SwiftUI中使用新宽度样式的方法。将UIFont转换为字体。创建字体扩展。将UIFont转换为Font我们从SwiftUI中如何将UIFont转换为Font[1]中了解到,Font有一个初始化方法可以接收UIFont作为参数。步骤如下您需要创建一个具有新宽度样式的UIFont。使用此UIFont创建字体。然后像普通字体一样使用它们。structNewFontExample:View{//1letcondensed=UIFont.systemFont(ofSize:46,weight:.bold,width:.condensed)letcompressed=UIFont.systemFont(ofSize:46,weight:.bold,width:.compressed)letstandard=UIFont.systemFont(ofSize:46,weight:.bold,width:.standard)letexpanded=UIFont.systemFont(ofSize:46,weight:.bold,width:.expanded)varbody:someView{VStack{//2Text("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的方法相同。我们只需要创建一个新的字体扩展,让它在SwiftUI中更容易使用。extensionFont{publicstaticfuncsystem(size:CGFloat,weight:UIFont.Weight,width:UIFont.Width)->Font{//1returnFont(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))如何使用新的宽度样式你可以在任何你想用的地方使用它。不会有任何限制,所有新的宽度都将具有相同的大小,相同的高度,只有宽度变化。下面是同一个文本、同一个字号、同一个字型的不同字宽样式的展示。新宽度样式的优势您可以在现有字体样式(例如细字体或粗体)之上使用新宽度样式,以在您的应用程序中创建独特的体验。Apple通过在标题或副标题上组合不同的字体宽度和样式,在他们的照片应用程序的“记忆”功能中使用它。下面是一些不同宽度和样式的字体组合,希望对你有所启发。Text("PetFriends").font(Font(UIFont.systemFont(ofSize:46,weight:.light,width:.expanded)))Text("OVERTHEYEARS").font(Font(UIFont.systemFont(ofSize:30,重量:.thin,宽度:.compressed)))Text(“宠物朋友”).font(Font(UIFont.systemFont(ofSize:46,重量:.black,宽度:.condensed)))Text(“OVERTHEYEARS").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]苹果字体平台:https://developer.apple。com/字体/。
