2011-10-25 12 views
5

Qual è la sequenza di chiamata del metodo del disegno UIButton?Disegno personalizzato in cima all'immagine di sfondo di UIButton

Ho una sottoclasse UIButton, chiamiamola UIMyButton. Lo aggiungo a un controller .xib e gli do un'immagine di sfondo. Quindi nel file UIMyButton.m sovrascrivo il metodo drawRect e disegna una forma. Qualcosa di simile:

- (void)drawRect:(CGRect)rect { 
    CGContextRef c = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(c, [UIColor orangeColor].CGColor); 
    CGContextFillRect(c, rect); 
} 

Il problema è che si disegna il rettangolo arancione l'immagine di sfondo sottostante. Quali metodi sono responsabili per disegnare/aggiornare le immagini di sfondo (ad esempio, aggiorna su "tap down")? Come posso forzare il disegno in cima senza aggiungere una sottoview personalizzata aggiuntiva al pulsante (o l'immagine di sfondo è una sottoview stessa)?

Sto solo cercando di capire come funziona la sequenza di disegno UIButton.

+0

hi Bastek - ci sei? Davvero dovresti selezionare l'ottima risposta qui sotto! – Fattie

risposta

4

La soluzione è di non utilizzare uno sfondo per il pulsante. Invece, disegna l'immagine all'interno del metodo drawRect in questo modo:

-(void)drawRect:(CGRect)rect 
{ 
    CGContextRef ctx=UIGraphicsGetCurrentContext(); 

    UIImage *image = [UIImage imageNamed:@"image.jpg"]; 
    [image drawInRect:self.bounds]; 

    CGContextSetFillColorWithColor(c, [UIColor orangeColor].CGColor); 
    CGContextFillRect(c, rect); 
} 
Problemi correlati