2011-10-25 10 views
5

Jaka jest metoda wywoływania sekwencji rysunku UIButton?Niestandardowy rysunek na wierzchu obrazu tła UIButtona

Mam podklasę UIButton, nazwijmy ją UIMyButton. Dodaję go do kontrolera .xib i nadaje mu obraz tła. Następnie w pliku UIMyButton.m nadpisuję metodę drawRect i narysuję kształt. Coś jak:

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

Problemem jest to, że rysuje pomarańczowy prostokąt pod obrazem tła. Jakie metody są odpowiedzialne za rysowanie/aktualizowanie obrazów tła (aktualizuje się na przykład w "tap down")? Jak wymusić narysowanie na górze bez dodawania dodatkowego niestandardowego widoku podrzędnego do przycisku (lub czy obraz tła jest sam podzbiorem)?

Po prostu staram się dokładnie zrozumieć, jak działa sekwencja rysunkowa UIButton.

+0

cześć Bastek - jesteś tam? Naprawdę powinieneś zaznaczyć doskonałą odpowiedź poniżej! – Fattie

Odpowiedz

4

Rozwiązaniem jest nie użycie tła dla przycisku. Zamiast tego, narysuj obrazek wewnątrz metody drawRect w następujący sposób:

-(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); 
} 
Powiązane problemy