[50% Résolu] Hauteur d'un NSTextField

Philippe49Philippe49 Membre
avril 2008 modifié dans API AppKit #1
:why?:Le sujet a souvent été abordé, dans ce post par exemple mais je ne trouve pas la réponse satisfaisante au problème suivant :
Comment, lorsqu'on change la police, ajuster la hauteur d'un NSTextField, à  largeur constante,.

J'ai essayé les solutions du post, et d'autres, mais je bute à  chaque fois sur le centrage vertical du texte dans le NSTextField. Il y a un automatisme (du style setVerticalAlignment: de NSTextBlock) dans les NSTextField que je n'arrive pas à  régler.

<br />Dans MyTextField, sous-classant NSTextField<br /><br />-(void) viewWillDraw<br />{&nbsp;&nbsp; 	<br />	float width=[self frame].size.width;<br />	NSSize cellSize=[[self cell] cellSizeForBounds:NSMakeRect(0.,0.,width,MAXFLOAT)];&nbsp; &nbsp; &nbsp; &nbsp; 		&nbsp; &nbsp; &nbsp;<br />	NSSize newSize=NSMakeSize(width,cellSize.height);<br />	[self setFrameSize:NSMakeSize(width,cellSize.height)];<br /><br />	// [self updateCell:cell];&nbsp; &nbsp;&lt;==&gt; ne change rien<br /><br />}<br />


Là  OK, mon NSTextView est de la bonne hauteur, mais la cell n'est pas dessinée au bon endroit.

Réponses

  • Philippe49Philippe49 Membre
    avril 2008 modifié #2
    Un indice : le réglage de la taille se fait par les préférences, et après avoir quitté + relancé, tout est en place ...

    La preuve :
  • Philippe49Philippe49 Membre
    14:49 modifié #3
    N'importe quoi  !!

    L'inclusion de  [cell attributedStringValue];  dans le code change le comportement

    -(void) viewWillDraw
    {
    id cell=[self cell];
    NSLog(@%@",[cell attributedStringValue]);
    // Resize
    float width=[self frame].size.width;
    NSSize cellSize=[cell cellSizeForBounds:NSMakeRect(0.,0.,width,MAXFLOAT)];
    NSSize newSize=NSMakeSize(width,cellSize.height);
    [self setFrameSize:newSize];
    // [self updateCell:cell];  <==> ne change rien
    }




  • Philippe49Philippe49 Membre
    14:49 modifié #4
    Espoir


    for(id view in [self subviews]){
    [view setAutoresizingMask:NSViewHeightSizable];
    }
  • AliGatorAliGator Membre, Modérateur
    avril 2008 modifié #5
    Juste pour pas que tu deviennes fou à  tourner en rond tout seul (mais bon apparemment tu trouves tout seul aussi les solutions :))...
    ... un petit peu d'encouragement  :p :p
  • Philippe49Philippe49 Membre
    14:49 modifié #6
    Merci Ali  :p   :p
    C'est réconfortant d'avoir des crocodiles dans son entourage

  • Philippe49Philippe49 Membre
    14:49 modifié #7
    dans 1208348925:

    Juste pour pas que tu deviennes fou à  tourner en rond tout seul (mais bon apparemment tu trouves tout seul aussi les solutions :))...
    ... un petit peu d'encouragement  :p :p


    Bon, j'ai trouvé tout seul, mais je suis devenu fou ...  :brule:
    Apparemment c'est l'option Rich Text qui semble engendrer un traitement spécial par les Glyphs et sans doute une utilisation de CoreGraphics en direct.
Connectez-vous ou Inscrivez-vous pour répondre.