setRowHeight dans une NSTableView

beltbelt Membre
02:31 modifié dans API AppKit #1
Bonjour à  tous.
J'ai expérimenté plusieurs façons de fixer la hauteur d'une ligne d'une NSTableView en fonction de la fonte affichée. Aucune n'est à  100% concluante. Ci-dessous mes différents essais. Qu'en pensez-vous ?

1) [ self setRowHeight : [newFont defaultLineHeightForFont] ] ;

2) [ self setRowHeight : [newFont defaultLineHeightForFont] + 2 ] ; ça marche à  peu près.

3) Et puis pour finir, j'ai trouvé ça sur le www, mais c'est très moyen :
float ascender = [ newFont ascender] ;
float leading = [newFont leading] ;
float descender = ( [newFont descender] ) ;
float rowHeight = ascender + descender + leading + ([ newFont pointSize ] / 4.0) + 0.5 ;
float defaultLineHeight = [newFont defaultLineHeightForFont];
if ( rowHeight < defaultLineHeight ) rowHeight = defaultLineHeight ;
[ self setRowHeight : rowHeight ] ;

Réponses

  • BruBru Membre
    02:31 modifié #2
    Pour récupérer la hauteur d'une police, essaie d'utiliser boundingRectForFont.

    Plus précisemment,
    hauteur=[newfont boundingRectForFont].size.height;
    
    devrait te renvoyer cette hauteur correcte (à  vérifier).

    .
  • beltbelt Membre
    02:31 modifié #3
    J'avais déjà  essayé ça, mais cela ne marche pas mieux que le reste (un essai en Verdana 64 pts est assez peu convaincant). C'est curieux qu'il n'existe pas qq chose de simple pour faire ça. Je soupçonne qu'il va falloir bidouiller un peu avec les NSLayout et NSTextStorage...
  • beltbelt Membre
    02:31 modifié #4
    A moins que ma ligne de base soit mal positionnée. Je vais étudier cela.
Connectez-vous ou Inscrivez-vous pour répondre.