Recherche…
Introduction
UIButton : UIControl intercepte les événements tactiles et envoie un message d'action à un objet cible lorsqu'il est tapé. Vous pouvez définir le titre, l'image et les autres propriétés d'apparence d'un bouton. De plus, vous pouvez spécifier une apparence différente pour chaque état du bouton.
Remarques
Types de boutons
Le type d'un bouton définit son apparence et son comportement de base. Après avoir créé un bouton, vous ne pouvez pas changer son type. Les types de boutons les plus couramment utilisés sont les types Personnalisé et Système, mais utilisez les autres types le cas échéant.
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.
UIButtonTypeContactAjouter
A contact add button.
Lors de la création d'un bouton personnalisé (c'est-à-dire un bouton avec le type personnalisé), le cadre du bouton est défini sur (0, 0, 0, 0) au départ. Avant d'ajouter le bouton à votre interface, vous devez mettre à jour le cadre à une valeur plus appropriée.
Créer un UIButton
Les UIBtons peuvent être initialisés dans un cadre:
Rapide
let button = UIButton(frame: CGRect(x: x, y: y, width: width, height: height)
Objectif c
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];
Un type spécifique d'UIButton peut être créé comme ceci:
Rapide
let button = UIButton(type: .Custom)
Objectif c
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
où type
est un UIButtonType
:
enum UIButtonType : Int {
case Custom
case System
case DetailDisclosure
case InfoLight
case InfoDark
case ContactAdd
static var RoundedRect: UIButtonType { get }
}
Définir le titre
Rapide
button.setTitle(titleString, forState: controlState)
Objectif c
[button setTitle:(NSString *) forState:(UIControlState)];
Pour définir le titre par défaut sur "Hello, World!"
Rapide
button.setTitle("Hello, World!", forState: .normal)
Objectif c
[button setTitle:@"Hello, World!" forControlState:UIControlStateNormal];
Définir la couleur du titre
//Swift
button.setTitleColor(color, forControlState: controlState)
//Objective-C
[button setTitleColor:(nullable UIColor *) forState:(UIControlState)];
Pour définir la couleur du titre en bleu
//Swift
button.setTitleColor(.blue, for: .normal)
//Objective-C
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]
Alignement horizontal des contenus
Rapide
//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
Objectif c
//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;
Obtenir l'étiquette du titre
L’étiquette de titre sous-jacente, s’il en existe, peut être récupérée à l’aide de
Rapide
var label: UILabel? = button.titleLabel
Objectif c
UILabel *label = button.titleLabel;
Cela peut être utilisé pour définir la police de l'étiquette du titre, par exemple
Rapide
button.titleLabel?.font = UIFont.boldSystemFontOfSize(12)
Objectif c
button.titleLabel.font = [UIFont boldSystemFontOfSize:12];
Désactiver un UIButton
Un bouton peut être désactivé par
Rapide
myButton.isEnabled = false
Objectif c:
myButton.enabled = NO;
Le bouton deviendra gris:
Si vous ne souhaitez pas que l'apparence du bouton change lorsque désactivé, définissez adjustsImageWhenDisabled
sur false
/ NO
Ajout d'une action à un UIButton via Code (par programmation)
Pour ajouter une méthode à un bouton, créez d'abord une méthode d'action:
Objectif c
-(void)someButtonAction:(id)sender {
// sender is the object that was tapped, in this case its the button.
NSLog(@"Button is tapped");
}
Rapide
func someButtonAction() {
print("Button is tapped")
}
Maintenant, pour ajouter cette méthode d'action à votre bouton, vous devez écrire la ligne de code suivante:
Objectif c
[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];
Rapide
yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .TouchUpInside)
Pour le paramètre ControlEvents, tous les membres d' ENUM
UIControlEvents sont valides.
Définition de la police
Rapide
myButton.titleLabel?.font = UIFont(name: "YourFontName", size: 20)
Objectif c
myButton.titleLabel.font = [UIFont fontWithName:@"YourFontName" size:20];
Joindre une méthode à un bouton
Pour ajouter une méthode à un bouton, créez d'abord une méthode d'action:
Objectif c
-(void) someButtonAction{
NSLog(@"Button is tapped");
}
Rapide
func someButtonAction() {
print("Button is tapped")
}
Maintenant, pour ajouter cette méthode d'action à votre bouton, vous devez écrire la ligne de code suivante:
Objectif c
[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];
Rapide
yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .touchUpInside)
Pour ControlEvents, tous les membres d' ENUM
UIControlEvents sont valides.
Obtenir la taille de UIButton strictement basée sur son texte et sa police
Pour obtenir la taille exacte du texte d'un UIButton en fonction de sa police, utilisez la fonction intrinsicContentSize
.
Rapide
button.intrinsicContentSize.width
Objectif c
button.intrinsicContentSize.width;
Définir une image
Rapide
button.setImage(UIImage(named:"test-image"), forState: .normal)
Objectif c
[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateNormal];
États de contrôle multiples
Vous pouvez également définir une image pour plusieurs UIControlStates
, par exemple pour définir la même image pour l'état Selected
et Highlighted
:
Rapide
button.setImage(UIImage(named:"test-image"), forState:[.selected, .highlighted])
Objectif c
[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateSelected|UIControlStateHighlighted];