关于swift:尝试在iOS上获取SF Pro Display Thin Italics

Trying to get SF Pro Display Thin Italics on iOS

我正在用Swift编写一个iOS应用,我想使用系统字体SF Pro。但是,我似乎无法弄清楚如何在设置文本斜体字的同时设置字体粗细。我知道Helvetica Neue和

1
UIFont(name:"HelveticaNeue-UltraLightItalic", size: 24.0)

但是当使用系统字体时,我只能像这样做一个或另一个

1
UIFont.italicSystemFont(ofSize: 24)

1
UIFont.systemFont(ofSize: 75.0, weight: UIFontWeightThin)

我已经在Font Book中看到了SF Pro Display Thin Italic,并且我知道您可以在编辑诸如Sketch和Photoshop之类的应用程序中使用它,但是我还没有找到一种方法来让iOS显示它。


这里是一种方法:

1
2
3
4
5
    var fnt = UIFont.systemFont(ofSize: 75.0, weight: UIFontWeightThin)
    if let dsc = fnt.fontDescriptor.withSymbolicTraits(.traitItalic) {
        fnt = UIFont(descriptor: dsc, size: 0)
    }
    labelOne.font = fnt

这应该给您一些基础-例如将其转换为extension以使其灵活。


在这里找到此扩展名

1
2
3
4
5
6
7
8
9
10
11
12
13
extension UIFont {

func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont? {
    guard let descriptorL = self.fontDescriptor.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
    else{
        return nil
    }
    return UIFont(descriptor: descriptorL, size: 0)
}

func boldItalic() -> UIFont? {
    return withTraits(traits: .traitBold, .traitItalic)
}

将扩展名用作:

1
label.font = label.font.boldItalic()

衬里(很丑):

1
UIFont(descriptor: UIFont.systemFont(ofSize: 14, weight: .thin).fontDescriptor.withSymbolicTraits(.traitItalic)!, size: 14)

1
UIFont(name:"SanFranciscoText-LightItalic", size: 24.0)

通常,使用此网站提供字体:http://iosfonts.com/