wake-up-neo.com

Wie verwende ich die neue San Francisco-Schriftart in iOS 9?

Bevor iOS 9 auf Schriften verwies, haben wir fontWithName von UIFont verwendet:

[UIFont fontWithName:@"HelveticaNeue" size:18]

Jetzt wechseln wir zu iOS 9. Wie kann auf die gleiche Weise auf eine neue San Francisco-Schriftart verwiesen werden?

Wir können es mit systemFontOfSize von UIFont verwenden, aber wie kann man auf andere Stile als reguläre Stile verweisen? Wie können Sie beispielsweise San Francisco Medium oder San Francisco Light Schriftarten verwenden?

49
alexey

In iOS 9 ist dies die Systemschriftart. Sie können also Folgendes tun:

let font = UIFont.systemFontOfSize(18)

Sie können den Schriftartnamen direkt verwenden, aber ich halte das nicht für sicher:

let font = UIFont(name: ".SFUIText-Medium", size: 18)!

Sie können die Schriftart auch mit spezifisches Gewicht wie folgt erstellen:

let font = UIFont.systemFontOfSize(18, weight: UIFontWeightMedium)

oder

let font = UIFont.systemFontOfSize(18, weight: UIFontWeightLight)
115
MirekE

Swift 4

label.font = UIFont.systemFont(ofSize: 22, weight: UIFont.Weight.bold)
5
Marcos Dávalos

Einzelheiten

  • Xcode Version 10.2.1 (10E1001), Swift 5

Lösung

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)
    }
}

Verwendung

guard let font = UIFont(font: .SFUIText, weight: .light, size: 14) else { return }

// ...

let font = UIFont(font: .SFUIDisplay, weight: .bold, size: 17)!
1