Y at-il une police de poids moyen entre -systemFontOfSize: et -boldSystemFontOfSize :?

-systemFontOfSize est trop mince et boldSystemFontOfSize est trop épais. J'ai besoin de quelque chose entre.

Quand je crée un UIFont comme ceci:

[UIFont boldSystemFontOfSize:14]; 

alors le débogueur imprime cette information de police:

famille de fontes: ".Helvetica NeueUI"; font-weight: gras; style de police: normal; taille de police: 14px

Parfois, les fonts ont un poids de police moyen. Comment puis-je créer une police de ce type mais avec un poids moyen?

Appeler NSLog(@"%@", [UIFont fontNamesForFamilyName:@"Helvetica Neue"]); imprime tous les styles de police disponibles pour Helvetica Neue, parmi eux HelveticaNeue-Medium qui ressemble à celui que vous voulez:

 UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:14.0f]; 

Si vous voulez vous assurer que la police change également lorsque la police du système change (comme avec les appareils rétiniens de Helvetica à Helvetica Neue), vous pouvez d'abord get la police système, puis prendre son familyName et son pointSize pour en récupérer un à moyen poids en utilisant + fontNamesForFamilyName puis + fontWithName:size:

À partir d' iOS 8.2, vous pouvez utiliser:

 [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; 

Swift 2.0, xcode7.1

 if #available(iOS 8.2, *) { titleLabel?.font = UIFont.systemFontOfSize(15, weight: UIFontWeightMedium) } else { titleLabel?.font = UIFont(name: "HelveticaNeue-Medium", size: 15) } 

Swift 3:

 UIFont.systemFont(ofSize: 14, weight: UIFontWeightMedium) 

Swift 2.3 et ne pas changer la taille de la police:

 extension UIFont { var mediumFont: UIFont { return UIFont.systemFontOfSize(self.pointSize, weight: UIFontWeightMedium) } } 

Utiliser avec:

 titleLabel.font = titleLabel.font.mediumFont 

Avec Swift 4, ajoutez cette extension

 extension UIFont { class func mediumSystemFont(ofSize pointSize:CGFloat) -> UIFont { return self.systemFont(ofSize: pointSize, weight: .medium) } } 

Alors :

 myLabel.font = UIFont.mediumSystemFont(ofSize: 16) 

Le même principe fonctionne avec Semibold, Black, etc, vérifiez UIFont.Weight