Alignements des NSTextField

Paisible.frPaisible.fr Membre
11:34 modifié dans API AppKit #1
Bonjour,

J'ai des NSTextFieds de deux sortes dans mon application et j'ai des petites questions par rapport à  la mise en forme de ceux-ci.

1) Des horizontaux. Le problème c'est que mon NSTextField à  une certaine hauteur et que le texte se retrouve tout en haut. Moi ce que j'aimerais c'est qu'il se situe au centre. Comment faire ?

2) Des verticaux. Quasiment le même probléme... J'ai résolu une partie de l'affichage en affichant caractére par caractère avec un retour chariot (\n) entre chaque lettre. Mais pareil le texte se retrouve tout en haut et il me le faudrait vers le bas.

Réponses

  • NseaProtectorNseaProtector Membre
    11:34 modifié #2
    Tu n'aurais pas une petite capture afin que l'on comprenne mieux ?
  • Paisible.frPaisible.fr Membre
    11:34 modifié #3
    dans 1221486716:

    Tu n'aurais pas une petite capture afin que l'on comprenne mieux ?


    Effectivement, ce sera plus simple avec une copie d'écran je pense.

    La voici :
    [img]http://[/img]
    ProblemeNSTextField.jpg
  • NoNo Membre
    11:34 modifié #4
    L'alignement vertical n'existe pas pour les NSTextField.
    C'est donc à  toi d'implémenter ça (par sous classage de NSTextFieldCell). Mais c'est coton à  faire (car il faut connaitre la taille du "rectangle" dans lequel le texte s'affiche idéalement, et c'est un boulot assez hard).

    Sinon, il y a peut être d'autres trucs à  faire, mais il faut savoir pourquoi tu as besoin d'avoir des textFields verticalement centrés.
  • 11:34 modifié #5
    Effectivement c'est plutôt chiant à  faire... mais si tu tiens vraiment à  faire ça, tu devrais sûrement utiliser NSAttributedString pour obtenir la longueur du texte. Ensuite tu rajoute par exemple 3px que tu multiplie par le nombre de caractères et tu obtiendrais la hauteur nécessaire pour le textField vertical. Te restera plus qu'à  redessiner chaque caractères :x.. mais franchement c'est limite comme méthode.
  • Paisible.frPaisible.fr Membre
    11:34 modifié #6
    Merci Eaglelouk ,

    1) oui c'est chiant
    2) oui j'ai vraiment besoin de faire cet affichage de la sorte
    3) j'étais en train de réfléchir à  une solution similaire en calculant la hauteur et la largeur du texte pour le positionner au bon endroit
  • septembre 2008 modifié #7
    dans 1221499755:

    Merci Eaglelouk ,

    1) oui c'est chiant
    2) oui j'ai vraiment besoin de faire cet affichage de la sorte
    3) j'étais en train de réfléchir à  une solution similaire en calculant la hauteur et la largeur du texte pour le positionner au bon endroit

    Bon allez... voici ce que j'ai réussi à  faire :
    verticalLabel.png

    Et le code source pourri (qui est surement à  améliorer) ci-joint ds le post. La classe c'est "VerticalField"

    Il te suffit de changer l'origin.y lorsque je dessine le caractère pour avoir un alignement vers le bas.
  • Paisible.frPaisible.fr Membre
    septembre 2008 modifié #8
    C'est super sympa ca Eaglelouk, mais je l'ai déjà  ça.
    Il suffit de séparer les caractere par un "\n"

    Il me faut la même chose mais alignés en bas.
    Je pense que je vais y arriver, faut juste que me penche dessus et que je prenne un peu de temps.

    Merci en tout cas !

    CORRECTION : j'ai pas lu ton message jusqu'au bout et j'ai été subjugué par la copie d'écran, du coup j'ai zappé ta remarque sur le positionnement en bas. Désolé et merci.
  • 11:34 modifié #9
    dans 1221501471:

    C'est super sympa ca Eaglelouk, mais je l'ai déjà  ça.
    Il suffit de séparer les caractere par un "\n"

    Il me faut la même chose mais alignés en bas.
    Je pense que je vais y arriver, faut juste que me penche dessus et que je prenne un peu de temps.

    Merci en tout cas !

    CORRECTION : j'ai pas lu ton message jusqu'au bout et j'ai été subjugué par la copie d'écran, du coup j'ai zappé ta remarque sur le positionnement en bas. Désolé et merci.


    Oui et moi j'avais zappé en fait que tu voulais tout coller en bas.. donc j'avais modifié mon post en te disant de changer l'origin.. mais finalement y'avait la boucle à  inverser aussi donc je te refile le code ci-joint ds le post.. et voici le resultat :

    verticalLabel2.png

  • AliGatorAliGator Membre, Modérateur
    11:34 modifié #10
    Ca te va vraiment bien comme nom, ça, "Louka Desroziers Prout" ;D

    Ok, je sors  :o
  • Philippe49Philippe49 Membre
    septembre 2008 modifié #11
    dans 1221499755:

    Merci Eaglelouk ,

    1) oui c'est chiant
    2) oui j'ai vraiment besoin de faire cet affichage de la sorte
    3) j'étais en train de réfléchir à  une solution similaire en calculant la hauteur et la largeur du texte pour le positionner au bon endroit


    voir le site répertorié à  cet endroit
    MyTextFieldCell fait le centrage vertical
Connectez-vous ou Inscrivez-vous pour répondre.