Utiliser resizeSubviewsWithOldSize

helgrindhelgrind Membre
16:40 modifié dans API AppKit #1
Bonjour,

j'utilise la méthode splitView:resizeSubviewsWithOldSize: pour empêcher le redimensionnement de la 2ème subview et d'agrandir seulement la première subview.
Mais quand cette première subview arrive à  une taille minimale, par exemple 200px, je voudrais commencer à  redimensionner la deuxième subview et pas la première.

J'utilise ce code:
- (void)splitView:(id)sender resizeSubviewsWithOldSize:(NSSize)oldSize<br />{<br />&nbsp; &nbsp; &nbsp; &nbsp; id leftSubview = [[self subviews] objectAtIndex:0];<br />	id rightSubview = [[self subviews] objectAtIndex:1];<br />	<br />	<br />	float newHeight = [sender frame].size.height;<br />	float newWidth = [sender frame].size.width - [rightSubview frame].size.width - [self dividerThickness];<br />	float newWidth2 = 0;<br />	<br />	if(newWidth &lt; 200)<br />	{<br />		newWidth = 200;<br />		newWidth2 = [sender frame].size.width - 200 - [self dividerThickness];<br />	}<br />	<br />	NSRect newFrame = [leftSubview frame];<br />	newFrame.size.width = newWidth;<br />	newFrame.size.height = newHeight;<br />	[leftSubview setFrame:newFrame];<br />	<br />	newFrame = [rightSubview frame];<br />	newFrame.size.height = newHeight;<br />	if(newWidth2 != 0)<br />		newFrame.size.width = newWidth2;<br />	[rightSubview setFrame:newFrame];<br />	<br />	[sender adjustSubviews];<br />}


Et bizarrement le if(newWidth < 200) est executé alors que la splitView est bien plus grande que 200px...

Réponses

  • Philippe49Philippe49 Membre
    16:40 modifié #2
    cela ne peut venir que d'une erreur dans le calcul de newWidth ...
    peut-être que le sender n'est pas celui que tu crois, ou quelque chose comme cela ?
  • helgrindhelgrind Membre
    16:40 modifié #3
    dans 1209416256:

    cela ne peut venir que d'une erreur dans le calcul de newWidth ...
    peut-être que le sender n'est pas celui que tu crois, ou quelque chose comme cela ?

    Ca ne change rien en utilisant self, le sender est le même.
    En faisant des NSLog pour connaà®tre la longueur de la splitView, j'ai chaque fois deux valeurs: 200 et la vrai taille.

    Ce que je n'ai pas encore dit c'est que j'utilise cette splitView dans un NSToolbarItem (j'essaie de recopier la barre d'URL + le champ de recherche qu'il y a dans Safari).

    Donc si je mets cette splitView comme vue d'une NSToolbarItem, je reçois chaque fois deux tailles différentes mais en mettant la splitView dans une fenêtre j'obtient qu'une seule valeur...à  n'y rien comprendre...
  • helgrindhelgrind Membre
    16:40 modifié #5
    dans 1209453384:


    J'ai essayer splitViewDidResizeSubviews: mais ça ne change rien au problème:

    Si je redimensionne la splitView avec la souris, je reçois la bonne taille.
    Si je redimensionne la fenêtre, je reçois 200 + la vrai taille...
  • 16:40 modifié #6
    Parce qu'il faut utiliser
    - (void)splitView:(NSSplitView*)sender resizeSubviewsWithOldSize: (NSSize)oldSize
  • helgrindhelgrind Membre
    16:40 modifié #7
    dans 1209464301:

    Parce qu'il faut utiliser
    - (void)splitView:(NSSplitView*)sender resizeSubviewsWithOldSize: (NSSize)oldSize


    Oui mais c'est la même chose.
Connectez-vous ou Inscrivez-vous pour répondre.