Domanda

Qual è il modo migliore per creare un NSButton un'immagine di sfondo personalizzata, che è in grado di avere larghezza variabile, senza fare la lunetta sguardo angolo allungato? So che ci sono metodi di convenienza per fare questo con UIButton: http: / /jainmarket.blogspot.com/2009/04/create-uibuttonbutton-with-images.html ma non ho visto nulla di simile in NSButton.

È stato utile?

Soluzione

avevo bisogno di avere uno sfondo pulsante personalizzato, ecco come ho fatto. Ho fatto un NSButton sottoclasse e il metodo drawRect overrode:

- (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];
}

Poi ho potuto mettere i pulsanti con Interface Builder, e per ottenere i grafici su ordinazione ho appena devono cambiare la classe alla mia nuova sottoclasse.

Altri suggerimenti

questo ha funzionato perfettamente bene per me:

[self.addBuddyCommitButton.cell setBezelStyle:NSRoundedBezelStyle];

NSButton non ha gli stessi metodi di convenienza per le immagini di sfondo come UIButton (il che è strano ed ecco a sperare di Apple colma questa lacuna). È necessario creare un pulsante personalizzato il mio sottoclassi NSView e la gestione della larghezza e gli angoli da soli variabile. Non credo che sarà facile, ma non credo che sarebbe stato terribilmente difficile sia.

Questo video spiega un metodo che sembra essere semplice e richiede una sola immagine del pulsante: http://youtu.be / 7MZJxPOo_xU

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top