首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS 9中使用新的旧金山字体?

如何在iOS 9中使用新的旧金山字体?
EN

Stack Overflow用户
提问于 2015-07-12 15:57:25
回答 3查看 40.2K关注 0票数 55

iOS 9引用字体之前,我们使用了fontWithName of UIFont

代码语言:javascript
复制
[UIFont fontWithName:@"HelveticaNeue" size:18]

现在我们转移到iOS 9,如何以同样的方式引用新的旧金山字体

我们可以将它与systemFontOfSize of UIFont一起使用,但是如何引用常规样式以外的其他样式呢?例如,如何使用旧金山媒体旧金山光字体?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-12 16:46:09

在iOS 9中,它是系统字体,因此您可以:

代码语言:javascript
复制
let font = UIFont.systemFontOfSize(18)

您可以直接使用字体名,但我认为这是不安全的:

代码语言:javascript
复制
let font = UIFont(name: ".SFUIText-Medium", size: 18)!

您还可以使用比重创建字体,如下所示:

代码语言:javascript
复制
let font = UIFont.systemFontOfSize(18, weight: UIFontWeightMedium)

代码语言:javascript
复制
let font = UIFont.systemFontOfSize(18, weight: UIFontWeightLight)
票数 122
EN

Stack Overflow用户

发布于 2018-04-27 02:38:39

Swift 4

代码语言:javascript
复制
label.font = UIFont.systemFont(ofSize: 22, weight: UIFont.Weight.bold)
票数 8
EN

Stack Overflow用户

发布于 2019-06-20 21:40:17

详细信息

  • Xcode版本10.2.1 (10E1001),Swift 5

解决方案

代码语言:javascript
复制
import UIKit

extension UIFont {

    enum Font: String {
        case SFUIText = "SFUIText"
        case SFUIDisplay = "SFUIDisplay"
    }

    private static func name(of weight: UIFont.Weight) -> String? {
        switch weight {
            case .ultraLight: return "UltraLight"
            case .thin: return "Thin"
            case .light: return "Light"
            case .regular: return nil
            case .medium: return "Medium"
            case .semibold: return "Semibold"
            case .bold: return "Bold"
            case .heavy: return "Heavy"
            case .black: return "Black"
            default: return nil
        }
    }

    convenience init?(font: Font, weight: UIFont.Weight, size: CGFloat) {
        var fontName = ".\(font.rawValue)"
        if let weightName = UIFont.name(of: weight) { fontName += "-\(weightName)" }
        self.init(name: fontName, size: size)
    }
}

用法

代码语言:javascript
复制
guard let font = UIFont(font: .SFUIText, weight: .light, size: 14) else { return }

// ...

let font = UIFont(font: .SFUIDisplay, weight: .bold, size: 17)!
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31369711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档