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