Je voudrais créer un NSSearchField, comme celui d'Ecoute 3.0. L'icône de recherche dans le champ de recherche doit être cliquable et développer et réduire si vous cliquez dessus.Icône de recherche cliquable dans NSSearchField et fond d'évanouissement
Comment pouvez-vous y parvenir? J'ai cherché dans la documentation, mais je n'ai rien trouvé d'utile. Je pourrais implémenter l'extension avec le proxy d'animation, donc c'est clair.
Une autre chose est que l'arrière-plan s'estompe/disparaît à mesure qu'il se développe/se réduit. Comment puis-je y parvenir?
Je serais reconnaissant pour tous les conseils, exemples de code, etc.
EDIT
Ok je trouve la première partie moi-même.
- (void) resetSearchButtonCell {
NSButtonCell *c= [[NSButtonCell alloc] init];
[c setButtonType:NSMomentaryChangeButton]; // configure the button
[c setBezelStyle:NSRegularSquareBezelStyle]; // configure the button
[c setBordered:NO];
[c setBezeled:NO];
[c setEditable:NO];
[c setImagePosition:NSImageOnly];
[c setImage:[NSImage imageNamed:@"search"]];
[c setAlternateImage:[NSImage imageNamed:@"search-pushed"]];
[c setTarget:self];
[c setAction:@selector(_search:)];
[self setSearchButtonCell:c];
}
Maintenant, je me suis fait une propriété isCollapsed
, que je bascule en _search:
. Et dans la méthode setter setIsCollapsed:
je fais ce qui suit:
NSRect newRect = self.frame;
if (_isCollapsed) {
newRect.size.width = kCollapsedWidth;
} else {
newRect.size.width = kEXpandedWidth;
}
[[self animator] setFrameSize:newRect.size];
Mais pour une raison quelconque le cadre est en cours de réinitialisation à la taille initiale, celui défini dans Interface Builder, lorsque le NSSearchField obtient ou desserre mise au point.
Quelqu'un peut-il me dire pourquoi?
EDIT
J'ai résolu ce problème aussi. C'était la mise en page automatique, qui a gâché l'animation. Maintenant, la seule chose qui reste est l'arrière-plan alpha, qui devrait changer. Je pourrais redessiner le tout, mais y a-t-il une autre solution où je pourrais juste modifier l'alpha de seulement l'arrière-plan et le bouton d'annulation?
Voir ma réponse ci-dessous. – Arvin