Buscar..


Introducción

UIButton : UIControl intercepta eventos táctiles y envía un mensaje de acción a un objeto de destino cuando se toca. Puede configurar el título, la imagen y otras propiedades de apariencia de un botón. Además, puede especificar una apariencia diferente para cada estado del botón.

Observaciones

Tipos de botones

El tipo de un botón define su apariencia y comportamiento básicos. Después de crear un botón, no puede cambiar su tipo. Los tipos de botones más utilizados son los tipos Personalizado y Sistema, pero use los otros tipos cuando sea apropiado

  • UIButtonTypeCustom

    No button style.
    
  • UIButtonTypeSystem

    A system style button, such as those shown in navigation bars and toolbars.
    
  • UIButtonTypeDetailDisclosure

    A detail disclosure button.
    
  • UIButtonTypeInfoLight

    An information button that has a light background.
    
  • UIButtonTypeInfoDark

    An information button that has a dark background.
    
  • UIButtonTypeContactAdd

    A contact add button.
    

Al crear un botón personalizado, es decir, un botón con el tipo personalizado, el marco del botón se establece inicialmente en (0, 0, 0, 0). Antes de agregar el botón a su interfaz, debe actualizar el marco a un valor más apropiado.

Creando un UIButton

Los UIButtons se pueden inicializar en un marco:

Rápido

let button = UIButton(frame: CGRect(x: x, y: y, width: width, height: height)

C objetivo

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];

Un tipo específico de UIButton se puede crear así:

Rápido

let button = UIButton(type: .Custom) 

C objetivo

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

donde type es un UIButtonType :

enum UIButtonType : Int {
    case Custom
    case System
    case DetailDisclosure
    case InfoLight
    case InfoDark
    case ContactAdd
    static var RoundedRect: UIButtonType { get }
}

Establecer título

Rápido

button.setTitle(titleString, forState: controlState)

C objetivo

[button setTitle:(NSString *) forState:(UIControlState)];

Para configurar el título predeterminado en "¡Hola, mundo!"

Rápido

button.setTitle("Hello, World!", forState: .normal)

C objetivo

[button setTitle:@"Hello, World!" forControlState:UIControlStateNormal];

Establecer el color del título

//Swift
button.setTitleColor(color, forControlState: controlState)

//Objective-C
[button setTitleColor:(nullable UIColor *) forState:(UIControlState)];

Para establecer el color del título en azul

//Swift
button.setTitleColor(.blue, for: .normal)

//Objective-C
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]

Alineación horizontal de contenidos.

Rápido

//Align contents to the left of the frame
button.contentHorizontalAlignment = .left

//Align contents to the right of the frame
button.contentHorizontalAlignment = .right

//Align contents to the center of the frame
button.contentHorizontalAlignment = .center

//Make contents fill the frame
button.contentHorizontalAlignment = .fill

C objetivo

//Align contents to the left
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

//Align contents to the right
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;

//Align contents to the center
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

//Align contents to fill the frame
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;

Obtener la etiqueta del título

La etiqueta del título subyacente, si existe, puede ser recuperada usando

Rápido

var label: UILabel? = button.titleLabel

C objetivo

UILabel *label = button.titleLabel;

Esto se puede usar para establecer la fuente de la etiqueta del título, por ejemplo

Rápido

button.titleLabel?.font = UIFont.boldSystemFontOfSize(12)

C objetivo

button.titleLabel.font = [UIFont boldSystemFontOfSize:12];

Deshabilitando un UIButton

Un botón puede ser desactivado por

Rápido

myButton.isEnabled = false

C objetivo:

myButton.enabled = NO;

El botón se pondrá gris:

introduzca la descripción de la imagen aquí

Si no desea que la apariencia del botón cambie cuando está deshabilitado, establezca adjustsImageWhenDisabled a false / NO

Agregar una acción a un UIButton a través del Código (programáticamente)

Para agregar un método a un botón, primero cree un método de acción:

C objetivo

-(void)someButtonAction:(id)sender {
  // sender is the object that was tapped, in this case its the button.
    NSLog(@"Button is tapped"); 
}

Rápido

func someButtonAction() {
    print("Button is tapped")
}

Ahora para agregar este método de acción a su botón, debe escribir la siguiente línea de código:

C objetivo

[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];

Rápido

yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .TouchUpInside)

Para el parámetro ControlEvents, todos los miembros de ENUM UIControlEvents son válidos.

Fuente de ajuste

Rápido

myButton.titleLabel?.font =  UIFont(name: "YourFontName", size: 20)

C objetivo

myButton.titleLabel.font = [UIFont fontWithName:@"YourFontName" size:20];

Adjuntar un método a un botón

Para agregar un método a un botón, primero cree un método de acción:

C objetivo

-(void) someButtonAction{
    NSLog(@"Button is tapped");

}

Rápido

func someButtonAction() {
        print("Button is tapped")
    }

Ahora para agregar este método de acción a su botón, debe escribir la siguiente línea de código:

C objetivo

[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];

Rápido

yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .touchUpInside)

Para ControlEvents, todos los miembros de ENUM UIControlEvents son válidos.

Obtenga el tamaño de UIButton basado estrictamente en su texto y fuente

Para obtener el tamaño exacto de un texto de UIButton basado en su fuente, use la función intrinsicContentSize .

Rápido

button.intrinsicContentSize.width

C objetivo

button.intrinsicContentSize.width;

Establecer imagen

Rápido

button.setImage(UIImage(named:"test-image"), forState: .normal)

C objetivo

[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateNormal];

Estados de control multiples

También puede establecer una imagen para varios UIControlStates , por ejemplo, para establecer la misma imagen para el estado Selected y Highlighted :

Rápido

button.setImage(UIImage(named:"test-image"), forState:[.selected, .highlighted])

C objetivo

[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateSelected|UIControlStateHighlighted];


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow