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

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:

entrer la description de l'image ici

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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow