Longueur en point d'une chaine de caractères( MacOSX)

Bonjour,
y a t'il une instruction pour calculer la longueur en points d'une chaine de caractères ?

Réponses

  • klogklog Membre

    sizeWithAttributes:

    Tu peux faire par exemple :

    NSSize size = [@"Ma string" sizeWithAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Helvetica" size:12.0f] forKey:NSFontAttributeName]];

  • klogklog Membre

    Sur iOS je crois qu'il y a aussi sizeWithFont:

    Et tu peux aussi en passer par une NSAttributedString qui a une fonction size

  • DrakenDraken Membre
    18 janv. modifié #5

    @klog a dit :
    Sur iOS je crois qu'il y a aussi sizeWithFont:

    Elle est obsolète depuis 2 ou 3 ans.

  • sizeWithAttributes existe aussi pour iOS mais retourne un CGSize.

  • PatyomPatyom Membre

    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
    }

  • DrakenDraken Membre

    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 ! 🐊

  • CéroceCéroce Membre, Modérateur
    19 janv. modifié #9

    @Patyom a dit :
    J'arrive à quelque chose, ça fonctionne pas mal mais je n'arrive pas à y inclure le nom de la police, voilà ma fonction,

    let maFont = NSFont.userFont(ofSize: CGFloat(maTaille))
    

    Il ne faut pas utiliser userFont (qui correspond probablement à Helvetica ?), mais ta police à toi:

    let maFont = NSFont(name: "EurostileLT-DemiOblique", size: 14.0)
    

    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

Connectez-vous ou Inscrivez-vous pour répondre.