UIFont - Comment obtenir une police fine système

98

UIFonta des méthodes pour obtenir une police régulière ( systemFontOfSize) ou une police en gras ( boldSystemFontOfSize), mais comment obtenir une "police système mince" disponible via le storyboard?

Le fait de passer «système-thin» à UIFontContructor ne fonctionne pas, ce constructeur ne fonctionne que pour les polices non système.

MiguelSlv
la source

Réponses:

266

Vous pouvez utiliser l'épaisseur fine de la police système:

UIFont.systemFont(ofSize: 34, weight: UIFontWeightThin)

Liste des poids disponibles pour San Francisco:

UIFontWeightUltraLight
UIFontWeightThin
UIFontWeightLight
UIFontWeightRegular
UIFontWeightMedium
UIFontWeightSemibold
UIFontWeightBold
UIFontWeightHeavy
UIFontWeightBlack

poids des polices san francisco

À partir d'iOS 11, a UIFontWeight* été renommé en UIFont.Weight.*. Vous pouvez en savoir plus ici https://developer.apple.com/documentation/uikit/uifont.weight .

s1ddok
la source
10
Uniquement pour iOS 8.2 et versions ultérieures, thnx
Husam
32

Depuis iOS 8.2 , vous pouvez désormais utiliserUIFont.systemFontOfSize(_ fontSize: CGFloat, weight weight: CGFloat):

UIFont.systemFontOfSize(19, weight: UIFontWeightLight)

Le SDK iOS a fourni des constantes pour les pondérations:

UIFontWeightUltraLight
UIFontWeightThin
UIFontWeightLight
UIFontWeightRegular
UIFontWeightMedium
UIFontWeightSemibold
UIFontWeightBold
UIFontWeightHeavy

L'utilisation de la police système est préférable à la création d'une police basée sur le nom de la police lorsque vous souhaitez utiliser des polices système, car iOS peut modifier leurs polices système sur iOS (comme quand ils l'ont fait avec Helvetica Neue dans iOS 7, et maintenant, San Francisco dans iOS 9) .

Donc, ce que je suggérerais est d'inclure le fichier TTF de la police que vous souhaitez utiliser comme fichier ttf comme police personnalisée et d'utiliser la police personnalisée dans votre application.

C'est la raison particulière pour laquelle je n'aime pas Apple. Ne faites jamais ce que dit Apple. Faites toujours ce que nous voulons. Apple continue de changer la police par défaut pour chaque système d'exploitation.

Fahim Parkar
la source
7

Aussi, si vous souhaitez conserver la même taille de police et simplement modifier le poids, utilisez la taille de police de l'élément ciblé. Par exemple:

demoLabel.font = UIFont.systemFont(ofSize: demoLabel.font.pointSize, weight: UIFontWeightThin)

avec cela, vous pouvez conserver la taille de police d'étiquette par défaut et simplement changer le poids.

À partir d'iOS 11, UIFontWeightThin a été renommé UIFont.Weight.thin. Vous pouvez en savoir plus ici https://developer.apple.com/documentation/uikit/uifont.weight .

GrandFelix
la source
2

Swift 4.2

 label.font = UIFont.systemFont(ofSize: 15, weight: UIFont.Weight.thin)
Pranit
la source