Ricerca…


introduzione

UIButton : UIControl intercetta gli eventi di tocco e invia un messaggio di azione a un oggetto di destinazione quando viene toccato. È possibile impostare il titolo, l'immagine e altre proprietà di aspetto di un pulsante. Inoltre, è possibile specificare un aspetto diverso per ogni stato del pulsante.

Osservazioni

Tipi di pulsanti

Il tipo di un pulsante definisce il suo aspetto e comportamento di base. Dopo aver creato un pulsante, non è possibile cambiarne il tipo. I tipi di pulsante più comuni sono i tipi Personalizzato e Sistema, ma se possibile, utilizzare gli altri tipi

  • 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.
    

Quando si crea un pulsante personalizzato, ovvero un pulsante con il tipo personalizzato, la cornice del pulsante viene inizialmente impostata su (0, 0, 0, 0). Prima di aggiungere il pulsante all'interfaccia, è necessario aggiornare la cornice con un valore più appropriato.

Creazione di un UIButton

Gli UIButtons possono essere inizializzati in un frame:

veloce

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

Obiettivo C

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

Un tipo specifico di UIButton può essere creato in questo modo:

veloce

let button = UIButton(type: .Custom) 

Obiettivo C

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

dove type è un UIButtonType :

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

Imposta il titolo

veloce

button.setTitle(titleString, forState: controlState)

Obiettivo C

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

Per impostare il titolo predefinito su "Hello, World!"

veloce

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

Obiettivo C

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

Imposta il colore del titolo

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

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

Per impostare il colore del titolo su blu

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

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

Allinea orizzontalmente i contenuti

veloce

//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

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

Ottenere l'etichetta del titolo

L'etichetta del titolo sottostante, se ne esiste una, può essere recuperata usando

veloce

var label: UILabel? = button.titleLabel

Obiettivo C

UILabel *label = button.titleLabel;

Questo può essere usato per impostare il carattere dell'etichetta del titolo, per esempio

veloce

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

Obiettivo C

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

Disabilitare un UIButton

Un pulsante può essere disabilitato da

veloce

myButton.isEnabled = false

Objective-C:

myButton.enabled = NO;

Il pulsante diventerà grigio:

inserisci la descrizione dell'immagine qui

Se non si desidera che l'aspetto del pulsante cambi quando è disattivato, impostare adjustsImageWhenDisabled su false / NO

Aggiunta di un'azione a un UIButton tramite codice (a livello di codice)

Per aggiungere un metodo a un pulsante, innanzitutto creare un metodo di azione:

Objective-C

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

veloce

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

Ora per aggiungere questo metodo di azione al tuo pulsante, devi scrivere la seguente riga di codice:

Obiettivo C

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

veloce

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

Per il parametro ControlEvents, tutti i membri di ENUM UIControlEvents sono validi.

Impostazione del carattere

veloce

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

Obiettivo C

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

Collegamento di un metodo a un pulsante

Per aggiungere un metodo a un pulsante, innanzitutto creare un metodo di azione:

Objective-C

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

}

veloce

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

Ora per aggiungere questo metodo di azione al tuo pulsante, devi scrivere la seguente riga di codice:

Obiettivo C

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

veloce

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

Per ControlEvents, tutti i membri di ENUM UIControlEvents sono validi.

Ottieni le dimensioni di UIButton in base al testo e al carattere

Per ottenere la dimensione esatta del testo di un UIButton in base al suo carattere, utilizzare la funzione intrinsicContentSize .

veloce

button.intrinsicContentSize.width

Objective-C

button.intrinsicContentSize.width;

Imposta immagine

veloce

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

Obiettivo C

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

Più stati di controllo

È inoltre possibile impostare un'immagine per più UIControlStates , ad esempio per impostare la stessa immagine per lo stato Selected e Highlighted :

veloce

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

Obiettivo C

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow