Antes de iOS 9 para hacer referencia a las fuentes que hemos utilizado fontWithName de UIFont:

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

Ahora nos estamos moviendo a iOS 9. Cómo hacer referencia a un nuevo de San Francisco de la fuente de la misma manera?

Podemos usarlo con systemFontOfSize de UIFont, pero cómo hacer referencia a los estilos de otros que regular? Por ejemplo, cómo utilizar San Francisco de Medio o San Francisco de Luz fuentes?

  • Este tipo de sonidos como una cosa que va a estar en el iOS9 developer docs. Has mirado ahí todavía? (Si es así, y no está ahí, que vale la pena poner en su respuesta. Si no, el primer paso es buscar allí)
InformationsquelleAutor alexey | 2015-07-12

3 Comentarios

  1. 116

    En iOS 9 es la fuente del sistema, por lo que podría hacer:

    let font = UIFont.systemFontOfSize(18)

    Que puede utilizar el nombre de la fuente directamente, pero no creo que esto es seguro:

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

    También puede crear la fuente con peso específico, así:

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

    o

    let font = UIFont.systemFontOfSize(18, weight: UIFontWeightLight)
    • Cualquier oficial maneras de usar el Medio o la Luz?
    • Sólo para enfatizar: MirekE es correcto, no es seguro usar .SFUIText-Medium o cualquier otro exacta de San Fransisco nombre. Apple ha declarado que esos nombres son privadas y están sujetas a cambio. Ellos quieren que usted utilice el sistema de la fuente de los métodos construido en UIFont y NSFont, específicamente porque se reserva el derecho a modificar lo que es exactamente el tipo de letra del sistema, dependiendo de la situación del usuario.
    • Por supuesto, si realmente necesita un nombre de fuente, let fontName = UIFont.systemFontOfSize(18, weight: UIFontWeightLight).fontName , de modo que si el privado de los cambios de nombre, automáticamente recuperar el correcto.
    • estoy usando SF weightlight fuente en iOS 9 para hacer un teclado personalizado, pero el problema es que se ve más ligero que la fuente predeterminada. he probado a cambiar regular y medio de la fuente, pero es bastante no como el texto por defecto de iOS teclado?!
    • hay alguna forma de utilizar esta fuente en un UIWebView?
  2. 1

    Detalles

    • Versión de Xcode 10.2.1 (10E1001), Swift 5

    Solución

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

    Uso

    guard let font = UIFont(font: .SFUIText, weight: .light, size: 14) else { return }
    
    //...
    
    let font = UIFont(font: .SFUIDisplay, weight: .bold, size: 17)!

Dejar respuesta

Please enter your comment!
Please enter your name here