-systemFontOfSize est trop mince et boldSystemFontOfSize est trop épais. J'ai besoin de quelque chose entre les deux.
Quand je crée un UIFont comme ceci:
[UIFont boldSystemFontOfSize:14];
alors le débogueur affiche ces informations de police:
font-family: ".Helvetica NeueUI"; poids de la police: audacieux; style de police: normal; taille de la police: 14px
Parfois, les polices ont un poids moyen. Comment créer une police de ce type mais de poids moyen?
L'appel de NSLog(@"%@", [UIFont fontNamesForFamilyName:@"Helvetica Neue"]);
imprime tous les styles de police disponibles pour Helvetica Neue, parmi lesquels le HelveticaNeue-Medium
, qui sonne comme 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 système change (par exemple, comme cela a été le cas avec les appareils Retina de Helvetica à Helvetica Neue), vous pouvez d'abord obtenir la police système, puis utiliser ses familyName
et pointSize
pour les extraire avec un médium. poids en utilisant + fontNamesForFamilyName
et ensuite + fontWithName:size:
À partir de 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)
Avec Swift 4, ajoutez cette extension
extension UIFont {
class func mediumSystemFont(ofSize pointSize:CGFloat) -> UIFont {
return self.systemFont(ofSize: pointSize, weight: .medium)
}
}
Ensuite :
myLabel.font = UIFont.mediumSystemFont(ofSize: 16)
Même principe fonctionne avec Semibold, Black, etc., vérifier UIFont.Weight
Swift 2.3 et ne change pas la taille de la police:
extension UIFont {
var mediumFont: UIFont {
return UIFont.systemFontOfSize(self.pointSize, weight: UIFontWeightMedium)
}
}
Utiliser avec:
titleLabel.font = titleLabel.font.mediumFont