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:
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];