Avant iOS 9 pour faire référence aux polices, nous utilisions fontWithName
sur UIFont
:
[UIFont fontWithName:@"HelveticaNeue" size:18]
Nous passons maintenant à iOS 9. Comment référencer un nouveau police de San Francisco de la même manière?
Nous pouvons l'utiliser avec systemFontOfSize
de UIFont
, mais comment référencer des styles autres que réguliers? Par exemple, comment utiliser les polices San Francisco Medium ou San Francisco Light?
Dans iOS 9, il s’agit de la police système, vous pouvez donc:
let font = UIFont.systemFontOfSize(18)
Vous pouvez utiliser directement le nom de la police, mais je ne pense pas que cela soit sans danger:
let font = UIFont(name: ".SFUIText-Medium", size: 18)!
Vous pouvez également créer la police avec poids spécifique , comme suit:
let font = UIFont.systemFontOfSize(18, weight: UIFontWeightMedium)
ou
let font = UIFont.systemFontOfSize(18, weight: UIFontWeightLight)
Swift 4
label.font = UIFont.systemFont(ofSize: 22, weight: UIFont.Weight.bold)
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)
}
}
guard let font = UIFont(font: .SFUIText, weight: .light, size: 14) else { return }
// ...
let font = UIFont(font: .SFUIDisplay, weight: .bold, size: 17)!