Poignée de SplitView

LeChatNoirLeChatNoir Membre, Modérateur
07:37 modifié dans API AppKit #1
Slt les gones,

Bon mon appli avance pas mal. J'ai implémenté les onglets en partie et je bosse sur le contenu de la fenêtre principale maintenant.

Ma fenêtre sera découpée en 4 avec des splitView.

Pour cela, j'ai utilisé RBSplitView, une classe ma foi bien pratique à  utilisée (plus pratique que les SplitView standard).

Seulement voilà , chaque fois que j'ajoute des objets à  mon appli, je trouve le design standard moche  :(

Donc la question du jour est la suivante :
Imaginez une vue coupée en 2 verticalement. La ligne de coupure sera noire et fine.
Dans la partie gauche, en haut et vers la ligne de séparation, j'aimerai avoir le même contrôle que celui dans iTunes ou dans Mail ou dans iPhoto (bref, qu'on voit de plus en plus), à  savoir une sorte de poignée pour redimensionner la splitview.

Vous feriez ça comment vous ? J'ai pas trop idée de comment m'y prendre...

Merci !






Réponses

  • 07:37 modifié #2
    Une piste:

    Tu surclasses ces 2 méthodes (NSSplitView):
    - (float)dividerThickness { return 1.0; }
    - (void)drawDividerInRect:(NSRect)aRect //dessiner la ligne noire, je ne serais pas surpris qu'un rectfill suffise.

    Sinon pour la poignée, tu fais un contrôle perso qui redimensionne par exemple sa superview (mouseDragged marche même quand la souris est en dehors de la fenêtre), la position du splitter étant donnée par la taille des vues qu'il contient.
  • LeChatNoirLeChatNoir Membre, Modérateur
    07:37 modifié #3
    Ok pour le divider, c'est ce que je prévoyais à  peu près.
    Pour le contrôle perso par contre, je suis pas au top.

    Je sous classe un NSControl ?
    Le MouseDragged dont tu parles, il vient d'où ?

    En gros, dans ce mouseDragged (j'imagine de mon contrôle perso), je redimensionne la vue qu'il convient. Ca je comprend, c'est simple. Mais pourquoi tu me parles alors du splitter ?

    Et oui, c'est repartit avec mes questions de "newbie"  :(
  • 07:37 modifié #4
    le mousedragged de ton contrôle perso, que je verrais plutôt comme une sous-classe de nsview (pas la peine d'utiliser NSControl).

    je te parle du splitter pour te dire que si le simple fait de redimensionner les vues contenues dans la splitview suffit, tu ne dois pas en plus te soucier de ça.
  • LeChatNoirLeChatNoir Membre, Modérateur
    07:37 modifié #5
    ah ben ça a l'air ultra simple alors !!
    Je vous tiens au courant !
    Merci !
  • LeChatNoirLeChatNoir Membre, Modérateur
    07:37 modifié #6
    Bon, ca a l'air de pas trop mal marcher !

    En fait, dans mon controleur perso, qui est une sous classe de NSView (merci Renaud !), j'ai mis une var d'instance float oldLocation.

    Dans le mouseDown, je met le X de la position de la souris dedans,
    Dans le MouseDragged, je calcul le mouvement à  appliquer = mouse.x-oldLocation
    Je redimensionne la RBSplitSubView en passant ce delta en param (la fonction est prévue pour)
    et je remet oldLocation=mouse.x.

    Et ça marche à  peu près.
    Il me reste un pb à  régler, c'est que le fonction de redimensionnement de s'applique pas tjs. Mais là , c'est lié au code de RBSplitView.

    A votre avis, c'est la bonne démarche ?
    a+ !

Connectez-vous ou Inscrivez-vous pour répondre.