Utiliser resizeSubviewsWithOldSize
helgrind
Membre
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:
Et bizarrement le if(newWidth < 200) est executé alors que la splitView est bien plus grande que 200px...
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 /> 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 < 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...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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...
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...
- (void)splitView:(NSSplitView*)sender resizeSubviewsWithOldSize: (NSSize)oldSize
Oui mais c'est la même chose.