Plusieurs boutons à  la suite avec taille variable.

BloodshedBloodshed Membre
17:35 modifié dans API AppKit #1
Bonjour,

Je souhaites afficher dans mon appli Cocoa une suite de Recessed Buttons qui doivent avoir la taille exacte de leur contenu (variable), et qui doivent coller aux boutons adjacents. Pour visualiser ce dont je veux parler, il suffit de regarder la Bookmarks Bar de Safari : chaque bouton contient le titre du bookmark, et la taille du bouton s'adapte au titre.

Je sais comment faire pour que le bouton se redimensionne suivant le contenu (avec la méthode sizeToFit:). En revanche, j'ai aucune idée de la manière dont je peux déplacer les boutons pour qu'ils collent aux plus près l'un de l'autre, après avoir appliqué le sizeToFit: sur chacun. Connaissez-vous un moyen ?

Enfin (je débute en Cocoa), est-ce qu'il est possible de créer des boutons dynamiquement ? (ie. sans passer par Interface Builder) afin d'afficher un nombre variable de recessed button (l'exemple est encore la bookmark bar de Safari).

Merci d'avance

Réponses

  • Philippe49Philippe49 Membre
    mars 2008 modifié #2
    dans 1205949467:

    Bonjour,

    Je souhaites afficher dans mon appli Cocoa une suite de Recessed Buttons qui doivent avoir la taille exacte de leur contenu (variable), et qui doivent coller aux boutons adjacents. Pour visualiser ce dont je veux parler, il suffit de regarder la Bookmarks Bar de Safari : chaque bouton contient le titre du bookmark, et la taille du bouton s'adapte au titre.

    Je sais comment faire pour que le bouton se redimensionne suivant le contenu (avec la méthode sizeToFit:). En revanche, j'ai aucune idée de la manière dont je peux déplacer les boutons pour qu'ils collent aux plus près l'un de l'autre, après avoir appliqué le sizeToFit: sur chacun. Connaissez-vous un moyen ?

    Utiliser NSMatrix qui associe plusieurs NSCell ?
    Voir comment il réagit à  sizeToFit: reporte-t-il la largeur uniformément ?
    où alors "à  la mano"

    dans 1205949467:

    Enfin (je débute en Cocoa), est-ce qu'il est possible de créer des boutons dynamiquement ? (ie. sans passer par Interface Builder) afin d'afficher un nombre variable de recessed button (l'exemple est encore la bookmark bar de Safari).

    Sans problème.
    NSButton* myButton= [[NSButton alloc ] initWithFrame:...
    [[window contentView] addSubview:myButton];
  • AntilogAntilog Membre
    17:35 modifié #3
    Je crois bien que NSMatrix n'admette que des objets de même taille.
  • BloodshedBloodshed Membre
    17:35 modifié #4
    Merci je vais me renseigner sur NSMatrix et je vous tiens au courant.

    Sinon lorsqu'on ajoute le bouton dans la contentView, se positionne-t-il automatiquement bien par rapport aux guidelines ou faut-il préciser une position avant tout ?
  • Philippe49Philippe49 Membre
    17:35 modifié #5
    l'argument de initWithFrame est une NSRect structure possédant 4 champs
    origin.x,origin.y, size.width et size.height

    La vue se positionnera dans sa superview selon ce rectangle (en Cocoa, les coordonnées sont des flottants, l'origine en bas à  gauche, l'axe des y vers le haut)

    Le bouton peut-être mis dans n'importe quelle vue existant dans l'interface, la contentView étant la racine de l'arborescence.
  • BloodshedBloodshed Membre
    17:35 modifié #6
    Ok, merci beaucoup pour ces précisions.

    Je me suis renseigné sur NSMatrix et apparemment il n'accepte que des tailles de cells fixes. C'est dommage parceque ça avait l'air d'être exactement ce qu'il me faut.
  • BloodshedBloodshed Membre
    17:35 modifié #7
    Bonjour,

    j'ai trouvé ce qu'il me faut (enfin à  première vue) ici :
    http://www.harmless.de/cocoa-code.php

    l'AMButtonBar permet de reproduire une barre telle que la barre de recherche du Finder.
Connectez-vous ou Inscrivez-vous pour répondre.