adapter les dimensions d'une NSTextView à  son contenu

Philippe49Philippe49 Membre
20:21 modifié dans API AppKit #1
Pour calculer la taille nécessaire à  la représentation d'une chaà®ne dans une NSTextView,  j'ai bien un code qui marche à  peu près,
<br />&nbsp; NSDictionary * attributes=[NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];<br />&nbsp; NSSize size=[string sizeWithAttributes:attributes];<br />	<br />&nbsp; NSSize textSize=NSMakeSize(<br />	size.width+2.*textContainerInsetSize.width+16.+[NSScroller scrollerWidthForControlSize:NSSmallControlSize] ,<br />	size.height+2.*textContainerInsetSize.height+16.<br />&nbsp; );<br /><br />


mais cela est relativement instable.
Avez-vous mieux ?

Réponses

  • 20:21 modifié #2
    [tt]-[NSText sizeToFit][/tt] ne te convient pas?

    Sinon le problème de sizeWithAttributes, c'est que la taille renvoyée correspond à  la taille nécessaire pour écrire la string sur une seule ligne, si c'est un problème pour toi, la question a déjà  été évoquée sur le forum.
  • Philippe49Philippe49 Membre
    novembre 2007 modifié #3
    dans 1194621217:

    [tt]-[NSText sizeToFit][/tt] ne te convient pas?

    cela pose les mêmes problèmes, et en fait, je veux redimensionner la fenêtre qui contient le NSTextView.

    En fait sizeToFit ne joue que sur la hauteur, et n'adapte pas la largeur du NSScrollView


    dans 1194621217:

    Sinon le problème de sizeWithAttributes, c'est que la taille renvoyée correspond à  la taille nécessaire pour écrire la string sur une seule ligne, si c'est un problème pour toi, la question a déjà  été évoquée sur le forum.

    à  priori, non, la taille est à  peu près bien calibrée sur plusieurs lignes, c'est simplement qu'il faut rajouter une valeur d'à  peu près un caractère (~16) par ligne.
    Le '\n' serait-il compté ??

    dans 1194621217:

    la question a déjà  été évoquée sur le forum.

    oui, en Février avec une solution avec NSLayoutManager.
    J'ai aussi essayé de faire un NSTextView hors écran, mais peut-être faut-il creuser davantage de ce côté.
Connectez-vous ou Inscrivez-vous pour répondre.