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? P>
Voici le code d'une solution: p> La solution alternative est ( obtenu à partir de Ce blog ): < / p>
3 Réponses :
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. P>
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.
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 update: strong> p> OK, je pense que je l'ai compris. Les deux solutions s'appuient sur un appel à La solution consiste à utiliser dans la solution n ° 1: p>
blockQuote> dans la solution n ° 2: p>
blockQuote> _cflags.vcentered code> booléen ( tsk em> tsk em>, mauvais programmeur!) Pour faire le travail. C'est simple, et ça marche. Je vais réinventer la roue plus tard si je dois. P>
Super code> pour obtenir le rect par défaut, puis modifier
origine.y code> et
taille.Height code> pour effectuer le centrage vertical . Les appels vers
Super CODE>, cependant, renvoient un rectangle dont la largeur a déjà été ajustée pour s'adapter au texte horizontalement. P>
origine.x code > et
taille.Width code> à partir du rect de limites qui est transmis à la méthode: p>
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.
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 . p>