Pregunta

¿Cuál es la mejor manera de crear una imagen de fondo NSButton una costumbre con la que es capaz de tener anchura variable, sin que el aspecto bisel esquina estirada? Sé que hay métodos de conveniencia de hacer esto con UIButton: http: / /jainmarket.blogspot.com/2009/04/create-uibuttonbutton-with-images.html pero no he visto nada similar en NSButton.

¿Fue útil?

Solución

tenía que tener un fondo botón personalizado, aquí está cómo lo hice. Hice un método drawRect overrode NSButton subclase y:

- (void)drawRect:(NSRect)dirtyRect
{
    // My buttons don't have a variable height, so I make sure that the height is fixed
    if (self.frame.size.height != 22) {
        self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width,
                                22.0f);
    }
    // 
    switch (self.state) {
            // Onstate graphics
        case NSOnState:
            NSDrawThreePartImage(self.bounds, 
                                 [NSImage imageNamed:@"btnmain_lb_h.png"], [NSImage imageNamed:@"btnmain_bg_h.png"], [NSImage imageNamed:@"btnmain_rb_h.png"],
                                 NO, NSCompositeSourceAtop, 1.0, NO);
            // Offstate graphics
        default:
        case NSOffState:
            NSDrawThreePartImage(self.bounds, 
                                 [NSImage imageNamed:@"btnmain_lb.png"], [NSImage imageNamed:@"btnmain_bg.png"], [NSImage imageNamed:@"btnmain_rb.png"],
                                 NO, NSCompositeSourceAtop, 1.0, NO);
            break;
    }

    [super drawRect:dirtyRect];
}

Entonces podría poner los botones usando el Interface Builder, y para obtener los gráficos personalizados que sólo tienen que cambiar la clase de mi nueva subclase.

Otros consejos

esto funcionó perfectamente bien para mí:

[self.addBuddyCommitButton.cell setBezelStyle:NSRoundedBezelStyle];

NSButton no tiene los mismos métodos de conveniencia para las imágenes de fondo como UIButton (lo cual es extraño y aquí está la esperanza de Apple tiende un puente sobre la brecha). Tendrá que crear un botón personalizado de subclases mi NSView y gastos de la anchura y esquinas usted mismo variable. Yo no creo que vaya a ser fácil, pero no creo que sería terriblemente difícil tampoco.

Este video explica un método que parece ser simple y sólo requiere una imagen del botón: http://youtu.be / 7MZJxPOo_xU

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top