Longueur en point d'une chaine de caractères( MacOSX)
Patyom
Membre
Bonjour,
y a t'il une instruction pour calculer la longueur en points d'une chaine de caractères ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
http://bluelemonbits.com/index.php/2015/08/20/evaluate-string-width-and-return-cgfloat-swift-osx/
sizeWithAttributes:
Tu peux faire par exemple :
NSSize size = [@"Ma string" sizeWithAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Helvetica" size:12.0f] forKey:NSFontAttributeName]];
Sur iOS je crois qu'il y a aussi
sizeWithFont:
Et tu peux aussi en passer par une NSAttributedString qui a une fonction
size
Elle est obsolète depuis 2 ou 3 ans.
sizeWithAttributes
existe aussi pour iOS mais retourne unCGSize
.J'arrive à quelque chose, ça fonctionne pas mal mais je n'arrive pas à y inclure le nom de la police, voilà ma fonction,
// Longueur d'un string en points
func evaluateStringWidth (textToEvaluate: String, maPolice: String, maTaille: Float) -> CGFloat{
let maFont = NSFont.userFont(ofSize: CGFloat(maTaille))
let attributes = NSDictionary(object: maFont as Any, forKey:NSFontAttributeName as NSCopying)
let sizeOfText = textToEvaluate.size(withAttributes: (attributes as! [String : AnyObject]))
return sizeOfText.width
}
Regarde ce post de 2015 : http://cocoacafe.fr/index.php?p=/discussion/14073/swift-resolu-affichage-dune-nsattributedstring-avec-une-contrainte-de-largeur#latest
On y aborde la même problématique que toi. C’était la bonne vieille époque avec Ali-la-doc-c’est lui ! 🐊
Il ne faut pas utiliser userFont (qui correspond probablement à Helvetica ?), mais ta police à toi:
Note que pour avoir le nom de la fonte, il faut aller dans l'appli Livre des polices, et prendre le nom PostScript.
Je suis désolé mais j'ai oublié de vous répondre, Ca fonctionne très bien, mes textes se positionnent exactement ou je veux, donc merci