2011-03-16 19 views
6

Me gustaría tener un NSButton con una imagen y una imagen alternativa. La imagen alternativa se debe mostrar mientras se presiona el botón y también me gustaría mostrar la imagen alternativa del código, llamando al [button setSelected:YES]. ¿Es esto posible sin tener que monetizar a mano la propiedad alternateImage?Perdido en NSButton tipos e imágenes alternativas

Respuesta

14

Esto es posible sin tener que cambiar manualmente la imagen del botón:

En Interface Builder (xib/plumín Editor) establecer el Tipo de NSButton a "Alternar" y la imagen cambiará automáticamente a la imagen/título alternativo.

Set the type to Toggle to use the alternate image

+0

Gracias hombre !! – Tommy

4

La manera más fácil es cambiar entre las dos imágenes:

@implementation NSButton (Select) 

- (void) setSelected: (BOOL) yn 
{ 
    NSImage *const tmp = [self image]; 
    [self setImage:[self alternateImage]]; 
    [self setAlternateImage:tmp]; 
} 

@end 
+0

Gracias, probablemente tienes razón. Agregué una categoría simple para cambiar entre las imágenes. – zoul

+0

¿Alguna idea de cómo puedo configurar la imagen alternativa para el evento de desplazamiento (cuando el mouse está sobre el botón, no cuando hace clic)? –

+0

@ThEuSeFuL: debe usar 'trackingArea' para el botón, y si su tipo de botón es' NSToggleButton', puede alternar entre las imágenes estándar y alternativas usando 'theButton.state = NSOffState;' y 'theButton.state = NSOnState ; '' – yonel

4

Puede utilizar un NSButton con el tipo establecido en NSToggleButton y luego alternar entre la image y la alternateImage utilizando los NSOnState/NSOffState estados de la NSButton.

NSButton* theButton = [[NSButton alloc] initWithFrame:....]; 
theButton.image = ..... 
theButton.alternateImage = ..... 
theButton.state = NSOffState; // displays the image 
theButton.state = NSOnState; // displays the alternateImage