2011-10-25 8 views
5

¿Cuál es la secuencia de llamada al método del dibujo de UIButton?Dibujo personalizado en la parte superior de la imagen de fondo de UIButton

Tengo una subclase UIButton, llamémosla UIMyButton. Lo agrego a un controlador .xib y le doy una imagen de fondo. Luego, en el archivo UIMyButton.m anulo el método drawRect y dibujo una forma. Algo así como:

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

El problema es que llama el rectángulo naranja la imagen de fondo por debajo. ¿Qué métodos son responsables de dibujar/actualizar imágenes de fondo (se actualiza en "tocar hacia abajo", por ejemplo)? ¿Cómo fuerzo el sorteo en la parte superior sin agregar una subvista personalizada adicional al botón (o la imagen de fondo es una subvista)?

Estoy tratando de obtener una comprensión clara de cómo funciona la secuencia de dibujo UIButton.

+0

hi Bastek - ¿estás ahí? ¡De verdad debería marcar la excelente respuesta a continuación! – Fattie

Respuesta

4

La solución es no utilizar un fondo para el botón. En su lugar, dibuje la imagen dentro del método drawRect de la siguiente manera:

-(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); 
} 
Cuestiones relacionadas