9
votes

NSTEXTFIELDCELL Alignement vertical, des solutions semblent raccourcir l'alignement horizontal

J'ai un NStextFelieldCell que je souhaite afficher avec un alignement vertical moyen. Grâce à une question plus ancienne ici et à une entrée de blog, j'ai deux solutions de travail.

Cependant, les deux solutions semblent écraser ma capacité à régler la cellule comme droite alignée. Quelqu'un peut-il m'aider à faire que l'une de ces solutions prend en charge les deux formes d'alignement?

Voici le code d'une solution: xxx

La solution alternative est ( obtenu à partir de Ce blog ): < / p> xxx


0 commentaires

3 Réponses :


3
votes

Vous pouvez utiliser NsparaRaStyle / Nsmutabilatailatrastyle pour définir l'alignement (et d'autres attributs). Ajoutez un objet NsparaGraphStyle de NsparaightStyle de manière appropriée à la gamme complète de votre chaîne attribuée.


2 commentaires

Cela me demande de coupler cette partie de la présentation avec ma couche de données et, honnêtement, je ne suis pas sûr que j'aime ça. Cela devrait respecter les options présentées dans IB, mais pour certaines raisons pour lesquelles il n'est pas (à cet égard alignement vertical devrait également être une option dans l'IB).


Je ne sais pas comment il le mélange plus que de définir la chaîne de NstextFieldCell à quelque chose de votre couche de modèle. :-) Alignement (et police, et la couleur, et la taille, ...) fait partie de tout cela. Je conviens toutefois que l'alignement vertical devrait être une option - produire un rapport d'amélioration. Comme il n'est pas disponible, vous devrez le rendre compte dans le code de dessin.



2
votes

Il y a quelques solutions potentielles postées dans un Question similaire que j'ai demandé à un moment de retour.

En toute honnêteté, j'utilise toujours le _cflags.vcentered booléen ( tsk tsk , mauvais programmeur!) Pour faire le travail. C'est simple, et ça marche. Je vais réinventer la roue plus tard si je dois.

update:

OK, je pense que je l'ai compris. Les deux solutions s'appuient sur un appel à Super pour obtenir le rect par défaut, puis modifier origine.y et taille.Height pour effectuer le centrage vertical . Les appels vers Super , cependant, renvoient un rectangle dont la largeur a déjà été ajustée pour s'adapter au texte horizontalement.

La solution consiste à utiliser origine.x et taille.Width à partir du rect de limites qui est transmis à la méthode:

dans la solution n ° 1: xxx

dans la solution n ° 2: xxx


6 commentaires

C'était en fait la solution à cette question que j'ai trouvée une de mes solutions.


J'essaie simplement de comprendre comment maintenir l'alignement horizontal avec cette solution. Mais je devais peut-être descendre et essayer un autre itinéraire si je ne peux pas.


Je suis surpris que l'alignement horizontal soit affecté par l'une ou l'autre de ces solutions, car aucun d'entre eux ne gâte avec la dimension X. Comment définissez-vous l'alignement?


Dans Builder d'interface, sur la colonne et la cellule.


Merci pour la mise à jour sur la solution James, mais cela échoue toujours à bien l'aligner. J'ai confirmé que _cflags.alignment est en train d'être réglé correctement. Il peut également être intéressant de noter que le centre Align fonctionne toujours bien.


J'ai réussi à proposer une "solution" de travail. Bien que cela implique d'examiner la valeur de _cflags.alignement.



5
votes

Je pose cette réponse à la question puisque elle fonctionne, cependant, je trouve le fait que je ne pouvais pas trouver une autre façon de vérifier que le réglage d'alignement de l'IB est très gênant. L'accès à _cflags semble juste un peu sale et j'adorerais trouver une méthode de nettoyeuse.

Basé sur le code posté plus tôt de cette entrée de blog . xxx


0 commentaires