2012-01-02 8 views
5

Tengo un UIButton sin texto y tengo 2 imágenes que me gustaría usar (una para el estado normal y la otra para el estado seleccionado). Las imágenes son más pequeñas que el tamaño del botón.Prevención del cambio de tamaño de UIImage para un UIButton

¿Cómo me aseguro de que ninguna de las imágenes se escale cuando se dibuja el botón? Establecer las propiedades de imageView solo cambia la escala correctamente para el estado normal pero no para el seleccionado.

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [button setImage:imageNormal forState:UIControlStateNormal]; 
    [button setImage:imageSelected forState:UIControlStateSelected]; 

    // this shows the correct scale in normal mode but not when button is tapped 
    button.imageView.contentScaleFactor = 1.0; 
    button.imageView.contentMode = UIViewContentModeCenter; 
+0

** NOTA !!! ** solo la imagen de fondo se estira de forma predeterminada para que coincida con el marco. Utilice la "imagen" y no la imagen de fondo, si lo quiere centrado – Fattie

Respuesta

10

Asumiendo que tiene la altura y la anchura se podía hacer esto:

int topBottom = (button.frame.size.height - imageHeight)/2; 
int leftRight = (button.frame.size.width - imageWidth)/2; 

button.imageEdgeInsets = UIEdgeInsetsMake(topBottom,leftRight,topBottom,leftRight); 

Y entonces no es necesario ajustar la contentMode/factor de escala.

+0

muchas gracias! – james075

Cuestiones relacionadas