SplitView

02:01 modifié dans API AppKit #1
Hello,

Ma splitView est composée d'une tableView (à  gauche) et d'une NSTextView (à  droite). Lorsque je redimensionne la fenêtre, la diviseur de la splitView bouge, alors que je voudrais qu'il reste tjrs immobile lors de la redimension de la fenêtre.

Comment faire ?

Merci,
Louka.

Réponses

  • 02:01 modifié #2
    Bru va sûrement trouver une méthode très simple (...quoi que là  j'ai un doute), mais en attendant, je te propose de sortir la grosse artillerie: utiliser une RBSplitView au lieu d'une NSSplitView http://www.brockerhoff.net/src/rbs.html.

    Dans quel cas, il suffit d'ajouter le code suivant dans le delégué de la splitview:
    [tt]- (void)splitView:(RBSplitView*)sender wasResizedFrom:(float)oldDimension to:(float)newDimension {
    if (sender == _mainSplitView) {
    RBSplitSubview *subview = [sender subviewAtPosition:0];
    [sender adjustSubviewsExcepting:subview];
    }
    }[/tt]
  • 02:01 modifié #3
    Ha ben ça me plaà®t bien ce truc :D facile à  utiliser et j'aime bien la possibilité de créer une animation de fermeture.

    Merci Renaud, c'est exactement ce que je cherchais ;-) (Bien que les initiales "RB" qui se trouvent devant le nom me font un peu peur :p )

    Louka.
  • BruBru Membre
    02:01 modifié #4
    dans 1156707062:

    Bru va sûrement trouver une méthode très simple (...quoi que là  j'ai un doute)


    Renaud, Renaud, Renaud...
    Que t'arrive t'il ?

    Méthode à  implanter dans l'objet delegate du splitview :
    <br />- (void)splitView:(NSSplitView *)sender resizeSubviewsWithOldSize:(NSSize)oldSize<br />{<br />&nbsp; &nbsp; NSView *v1, *v2;<br />&nbsp; &nbsp; float w1, w2;<br />&nbsp; &nbsp; NSSize s;<br /><br />&nbsp; &nbsp; // récupération des 2 subviews intégrés dans le splitview<br />&nbsp; &nbsp; v1=[[sender subviews] objectAtIndex:0];<br />&nbsp; &nbsp; v2=[[sender subviews] lastObject];<br /><br />&nbsp; &nbsp; // mémorisation de la largeur actuelle du 1er subview (à  gauche)<br />&nbsp; &nbsp; w1=[v1 frame].size.width;<br /><br />&nbsp; &nbsp; // appel de la méthode de réajustement des suvbviews selon la nouvelle taille du splitview<br />&nbsp; &nbsp; [sender adjustSubviews];<br /><br />&nbsp; &nbsp; // mémorisation de la nouvelle largeur (après changement de taille) du 1er subview<br />&nbsp; &nbsp; w2=[v1 frame].size.width;<br /><br />&nbsp; &nbsp; // on force la largeur du 1er subview à  sa largeur d&#39;origine (avant changement de taille)<br />&nbsp; &nbsp; s=[v1 frame].size;<br />&nbsp; &nbsp; s.width=w1;<br />&nbsp; &nbsp; [v1 setFrameSize:s];<br /><br />&nbsp; &nbsp; // on applique la différence entre ancienne et nouvelle largeur à  la largeur du 2nd subview (à  droite)<br />&nbsp; &nbsp; s=[v2 frame].size;<br />&nbsp; &nbsp; s.width+=(w2-w1);<br />&nbsp; &nbsp; [v2 setFrameSize:s];<br />}<br />
    


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