Largeur de lettre
fouf
Membre
Bonjour à tous.
L'ai besoin de calculé la place que prend une chaine de caractère que je vais afficher à l'écran. J'utilise donc NSAttributedString et sa méthode size pour faire cela, ca marche très bien. Mais c'est lent. En effet,, il faut à chaque fois que je crée une NSAttributedString temporaire à chaque fois que la méthode est appelé ce qui est fait très souvent. Etant donné que le taille et la police de mes lettres n'étant pas cahngeanble, je pense donc utilisé la méthode length de NSString pour récupérer la longueur de la chaine et ensuite la multiplié par la taille moyenne (ou maximale) des caractères. Je continuerai toujours à utiliser NSAttributedString pour le dessin, mais ca sera deja ca de fait
Merci d'avance à tous :fouf):
L'ai besoin de calculé la place que prend une chaine de caractère que je vais afficher à l'écran. J'utilise donc NSAttributedString et sa méthode size pour faire cela, ca marche très bien. Mais c'est lent. En effet,, il faut à chaque fois que je crée une NSAttributedString temporaire à chaque fois que la méthode est appelé ce qui est fait très souvent. Etant donné que le taille et la police de mes lettres n'étant pas cahngeanble, je pense donc utilisé la méthode length de NSString pour récupérer la longueur de la chaine et ensuite la multiplié par la taille moyenne (ou maximale) des caractères. Je continuerai toujours à utiliser NSAttributedString pour le dessin, mais ca sera deja ca de fait
Merci d'avance à tous :fouf):
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu crées tout d'abord un petit projet qui se charge de construire ta table. Cette table pourrait se présenter sous forme d'un dictionary, composé de clés ayant pour noms les caractères (a,b,c,d,etc...) et de valeur stockées dans des NSNumber de types float pour les largeurs associées à chaque caractère. Quand le dictionary est prêt, tu l'enregistres dans un fichier sous forme xml, puis tu peux ensuite l'inclure dans le bundle de ton projet.
Après tu n'as plus qu'à calculer la largeur de ta chaà®ne selon les valeurs de ta table.
[tt]
NSDictionary *tableDictionary=...; // Initialisation de la table selon tes soins
NSString *maString=@CalculLargeurChaine; // Chaine dont on veux la largeur
int nbCharString=[maString length]; // Nbres de caractères dans la chaine
float largeurChaine=0; // Largeur de la chaine
for (i=0;i<nbCharString;i++)
{
// On retrouve la valeur associée au caractère en cours et on l'ajoute au total
largeurChaine=largeurChaine+tableDictionary valueForKey:[maString substringWithRange:NSMakeRange(i,1) floatValue];
}
[/tt]
Bien sûr ensuite il faut comparer par rapport à la méthode classique si tu gagnes vraiment du temps, et déterminer si c'est vraiment valable.
Merci encore