2011-01-05 30 views
15

Soy un novato con Objective C. ¿Cómo establecería el fondo de este botón en una imagen (la imagen ya está en la carpeta de recursos en XCode, "blue_button.png") en lugar de clearColor? Además, preferiría usar la imagen como la forma del botón en lugar de UIButtonTypeRoundedRect.Establecer una imagen de fondo para UIButton

btnClear = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 

btnClear.frame = CGRectMake(115, 350, 90, 40); 

[btnClear setTitle:@"Clear" forState:UIControlStateNormal]; 

btnClear.backgroundColor = [UIColor clearColor]; 

[btnClear addTarget:self action:@selector(clearAction:) 

forControlEvents:UIControlEventTouchUpInside]; 

[self.view addSubview:btnClear]; 

Sé cómo hacer esto en Interface Builder, pero prefiero aprender a hacerlo en XCode.

+0

se puede hacer eso en el Interface Builder si se utiliza la semilla – Vjy

+0

debe aceptar una respuesta, es bueno para todos los involucrados ... – whyoz

Respuesta

2

Puede usar [UIColor colorWithPatternImage:] para establecer el color de fondo de la imagen. Para usar la imagen, debe cambiar el estilo del botón a personalizado.

8

Véase el UIButton class reference: -setBackgroundImage:forState:

crear el botón con el tipo UIButtonTypeCustom en lugar de UIButtonTypeRoundedRect si no desea utilizar el estilo de esquina redondeada.

6

Es necesario declarar el botón con el siguiente tipo de UIButtonTypeCustom:

btnClear = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 

, entonces debería ser capaz de utilizar la siguiente manera:

[btnClear setImage:[UIImage imageNamed:@"blue_button.png"] forState:UIControlStateNormal]; 

Hay 6 diferentes estados de control que se pueden establecer .

enum { 
    UIControlStateNormal    = 0, 
    UIControlStateHighlighted   = 1 << 0, 
    UIControlStateDisabled    = 1 << 1, 
    UIControlStateSelected    = 1 << 2, 
    UIControlStateApplication   = 0x00FF0000, 
    UIControlStateReserved    = 0xFF000000 
}; 

Estas son algunas referencias que pueden ayudar:

UIButton Class Reference

UIControl Class Reference

+0

Esto funciona, pero ahora no estoy seguro de cómo configurar el título. Estaba usando [btnClear setTitle:@"Clear" forState:UIControlStateNormal]; Linda

+0

eche un vistazo a esto y vea si ayuda. http://stackoverflow.com/questions/1469474/setting-an-image-for-a-uibutton-in-code –

+0

Puede establecer e imagen o un mosaico, pero hay algunas cosas que puede hacer para obtener el título show –

42

Esto funciona:

UIButton *btnClear = [[UIButton alloc] init]; 
btnClear = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 
btnClear.frame = CGRectMake(115, 200, 90, 40); 
[btnClear setTitle:@"Clear" forState:UIControlStateNormal]; 
[btnClear setBackgroundImage:[UIImage imageNamed:@"blue_button.png"] forState:UIControlStateNormal]; 
[btnClear addTarget:self action:@selector(clearAction:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:btnClear]; 
+3

Por favor, marque esta respuesta como aceptada ... –

1

No hay necesidad de configurar botón para UIButtonTypeCustom- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state método también funciona para UIButtonTypeRoundedRect

1

si desea establecer como fondo de botón con imágenes en Internet, utilizando SDWebImage es una opción elegante:

#import <SDWebImage/UIButton+WebCache.h> 

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)]; 
[button setBackgroundImageWithURL:imageURL forState:UIControlStateNormal]; 
Cuestiones relacionadas