Comment puis-je créer un bold UIFont à partir d'une UIFont?
Si j'ai un UIFont
objet, est-il possible de le convertir en gras? Je ne sais pas le nom de la police, j'ai juste une UIFont objet. Ce que je veux, c'est une fonction comme
UIFont *boldFontFromFont(UIFont *input)
{
return [input derivedFontWithFontWeight:UIFontWeightBold];
}
Comment puis-je changer le code pour qu'il fonctionne. (Le code ci-dessus ne fonctionne pas, j'ai juste fait ça pour illustrer le point.)
Merci d'avance.
- vraiment? cette question est à partir de 2013. Doit-on fermer comme en double maintenant, 5 ans plus tard, parce que quelqu'un d'autre a demandé une question similaire, à nouveau?
- mon erreur. La nouvelle devrait être fermé.
- ou, sinon, nous laissons les deux questions en direct? Le UIFont.systemFont(ofSize:poids: méthode n'existe pas dans 2013. La technologie change tout le temps. Ma question était: "Vivre en 2013, Comment puis-je créer un bold UIFont à partir d'une UIFont en Objective-C?" - l'autre question est: "Vivre en 2018, Comment faire pour Définir une Police Spécifique de Poids pour UILabel rapide" - pas vraiment la même chose si vous l'exprimer de cette façon.
- aussi, la création d'un objet de police, avec un poids spécifique à partir d'un nom de police et d'une police de poids n'est pas la même chose que de vouloir créer une police avec un poids différent à partir d'un objet de police. Ça me dérange quand les questions sont trop ardemment fermés comme des doublons, tout simplement parce qu'ils sont à 90% similaire. Il n'aide pas n'importe qui.
Vous devez vous connecter pour publier un commentaire.
Pour obtenir une police en gras vous avez besoin pour passer un nom spécifique de la police à partir d'une police de la famille. Vous pouvez obtenir un nom de famille de polices à partir d'une police donnée, puis la liste de toutes les polices de cette famille. En général, une police en gras contiennent "gras" dans son nom, mais le format n'est pas stricte et il pourrait y avoir des variations telles que "Helvetica-BoldOblique", par exemple. Vous pouvez commencer à partir de ce code:
UIFont *boldFont = [self boldFontFromFont:[UIFont systemFontOfSize:12.0]];
. NSLog de sortie est:<UICFFont: 0x758b320> font-family: "Helvetica-BoldOblique"; font-weight: bold; font-style: italic; font-size: 12px
iPhoneDevProtip: iPhone 4 system font is ".Helvetica NeueUI" with different lineHeight, ascender, descender metrics than "Helvetica Neue".
. Solution de contournement: github.com/schwa/CoreTextToy/pull/35/filesif(font == [UIFont systemFontOfSize:font.pointSize]) { return [UIFont boldSystemFontOfSize:font.pointSize]; } else if(font == [UIFont boldSystemFontOfSize:font.pointSize]) { return font; }
iOS 7 présente une nouvelle UIFontDescriptor classe, ce qui le rend beaucoup plus facile:
Pour les gens qui ont acheté ici à la recherche d'un Cacao (macOS) équivalent,
UIFontDescriptor
vient deNSFontDescriptor
, disponible depuis la version 10.3.Et si vous êtes à la recherche pour le mise en œuvre rapide:
Espérons que cette aide! Cheers!
Tenter de dériver le gras/italique de la police à l'aide de la police ou des noms de famille ne fonctionne plus correctement depuis iOS 7, en raison de l'énigmatique nom de famille de polices de la police système. Ci-dessous est une simple extension de dériver le gras/italique de la police à l'aide de la UIFontDescriptor classe.
C'est un très vieux thread mais quelqu'un peut être intéressé par la façon de le faire dans Swift 5 de nos jours.
Facile comme ça:
Vous pouvez soit utiliser
Si vous utilisez des polices personnalisées, vous devez utiliser le nom directement
Vous pouvez consulter le possible des noms de police avec
Dans ce Post: https://stackoverflow.com/a/15388946/436818 Ben M a une idée de comment avoir la version en gras dynamiquement. Mais d'étendre la méthode pour être sûr d'obtenir la version en gras (si elle existe) parce qu'il y a d'autres versions audacieuses comme CondensedBold trop.
Depuis que cette question apparaît lorsque vous effectuez une recherche pour le gras UIFonts dans Swift, voici une nouvelle réponse:
Exemple: