Une question concernant NSSplitView
belt
Membre
Voilà , j'ai une fenêtre qui comporte un NSSplitView comportant deux sous-vues (à gauche, un NStableView et à droite, un NSScrollView). Je voudrais que lors du redimensionnement de la fenêtre la largeur de la vue de gauche ne change pas. Peut-on faire ça avec IB ? Je n'y suis pas arrivé.
Sans IB, peut on esperer faire qq chose avec splitViewWillResizeSubviews: de NSSpliView ?
Merci par avance pour votre précieuse aide...
Sans IB, peut on esperer faire qq chose avec splitViewWillResizeSubviews: de NSSpliView ?
Merci par avance pour votre précieuse aide...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
En fait, par défaut, NSSplitView augmente ou diminue les largeur et hauteur de toutes les sous-vues qui le constituent, et celà de façon proportionnelle à leur largeur/hauteur initiales. Par exemple, si NSSplitView comporte deux sous-vues de largeurs respectives 400 et 200 pixels et si la largeur totale de la fenêtre est multipliée par 1,5 lors d'un agrandissement, alors les nouvelles largeurs des sous-vues seront de 400 x 1,5 et 200 x 1,5 pixels.
C'est ce comportement que j'aimerais modifier...
Dans le délégué de ta splitview tu ajoutes le code suivant:
[tt]- (float)splitView:(NSSplitView *)sender constrainSplitPosition:(float)proposedPosition ofSubviewAt:(int)offset {
return 75.0;
}
- (void)splitViewDidResizeSubviews:(NSNotification *)aNotification {
NSView* v = [[[aNotification object] subviews] objectAtIndex:0];
NSRect r = [v frame];
r.size.width = 75.0;
[v setFrame:r];
}[/tt]
L'intérêt d'un delegate est justement de permettre d'éviter de sous-classer.
[tt]- (float)splitView:(NSSplitView *)sender constrainSplitPosition:(float)proposedPosition ofSubviewAt:(int)offset {
if ([theSky isBlue]) return proposedPosition;
return 75.0;Â Â Â
}[/tt]