Suche…
Einführung
UIButton : UIControl fängt Berührungsereignisse ab und sendet beim Tippen eine Aktionsnachricht an ein Zielobjekt. Sie können den Titel, das Bild und andere Darstellungseigenschaften einer Schaltfläche festlegen. Darüber hinaus können Sie für jeden Schaltflächenstatus ein anderes Erscheinungsbild angeben.
Bemerkungen
Schaltflächentypen
Der Typ einer Schaltfläche bestimmt das grundlegende Erscheinungsbild und Verhalten. Nachdem Sie eine Schaltfläche erstellt haben, können Sie ihren Typ nicht ändern. Die am häufigsten verwendeten Schaltflächentypen sind "Benutzerdefiniert" und "Systemtyp", verwenden Sie jedoch gegebenenfalls die anderen Typen
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.
Beim Erstellen einer benutzerdefinierten Schaltfläche - das ist eine Schaltfläche mit dem benutzerdefinierten Typ - wird der Rahmen der Schaltfläche anfänglich auf (0, 0, 0, 0) gesetzt. Bevor Sie die Schaltfläche zu Ihrer Benutzeroberfläche hinzufügen, sollten Sie den Frame auf einen angemesseneren Wert aktualisieren.
Erstellen eines UIButton
UIButtons können in einem Frame initialisiert werden:
Schnell
let button = UIButton(frame: CGRect(x: x, y: y, width: width, height: height)
Ziel c
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];
Ein bestimmter UIButton-Typ kann wie folgt erstellt werden:
Schnell
let button = UIButton(type: .Custom)
Ziel c
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
wobei type
ein UIButtonType
:
enum UIButtonType : Int {
case Custom
case System
case DetailDisclosure
case InfoLight
case InfoDark
case ContactAdd
static var RoundedRect: UIButtonType { get }
}
Titel einstellen
Schnell
button.setTitle(titleString, forState: controlState)
Ziel c
[button setTitle:(NSString *) forState:(UIControlState)];
So legen Sie den Standardtitel auf "Hallo, Welt!"
Schnell
button.setTitle("Hello, World!", forState: .normal)
Ziel c
[button setTitle:@"Hello, World!" forControlState:UIControlStateNormal];
Titelfarbe einstellen
//Swift
button.setTitleColor(color, forControlState: controlState)
//Objective-C
[button setTitleColor:(nullable UIColor *) forState:(UIControlState)];
Um die Titelfarbe auf Blau zu setzen
//Swift
button.setTitleColor(.blue, for: .normal)
//Objective-C
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]
Inhalte horizontal ausrichten
Schnell
//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
Ziel 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;
Titelbezeichnung abrufen
Das darunterliegende Titeletikett kann, sofern vorhanden, mit abgerufen werden
Schnell
var label: UILabel? = button.titleLabel
Ziel c
UILabel *label = button.titleLabel;
Hiermit kann beispielsweise die Schriftart der Titelbezeichnung festgelegt werden
Schnell
button.titleLabel?.font = UIFont.boldSystemFontOfSize(12)
Ziel c
button.titleLabel.font = [UIFont boldSystemFontOfSize:12];
Deaktivieren eines UIButton
Eine Schaltfläche kann mit deaktiviert werden
Schnell
myButton.isEnabled = false
Ziel c:
myButton.enabled = NO;
Die Schaltfläche wird grau dargestellt:
Wenn Sie nicht möchten, dass sich die Schaltfläche beim adjustsImageWhenDisabled
der Schaltfläche ändert, setzen Sie " adjustsImageWhenDisabled
auf " false
/ NO
Hinzufügen einer Aktion zu einem UIButton über Code (programmgesteuert)
Um einer Schaltfläche eine Methode hinzuzufügen, erstellen Sie zuerst eine Aktionsmethode:
Ziel c
-(void)someButtonAction:(id)sender {
// sender is the object that was tapped, in this case its the button.
NSLog(@"Button is tapped");
}
Schnell
func someButtonAction() {
print("Button is tapped")
}
Um diese Aktionsmethode jetzt zu Ihrer Schaltfläche hinzuzufügen, müssen Sie die folgende Codezeile schreiben:
Ziel c
[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];
Schnell
yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .TouchUpInside)
Für den Parameter ControlEvents sind alle Member von ENUM
UIControlEvents gültig.
Schriftart einstellen
Schnell
myButton.titleLabel?.font = UIFont(name: "YourFontName", size: 20)
Ziel c
myButton.titleLabel.font = [UIFont fontWithName:@"YourFontName" size:20];
Anhängen einer Methode an eine Schaltfläche
Um einer Schaltfläche eine Methode hinzuzufügen, erstellen Sie zuerst eine Aktionsmethode:
Ziel c
-(void) someButtonAction{
NSLog(@"Button is tapped");
}
Schnell
func someButtonAction() {
print("Button is tapped")
}
Um diese Aktionsmethode jetzt zu Ihrer Schaltfläche hinzuzufügen, müssen Sie die folgende Codezeile schreiben:
Ziel c
[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];
Schnell
yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .touchUpInside)
Für ControlEvents sind alle Mitglieder von ENUM
UIControlEvents gültig.
Ermitteln Sie die Größe von UIButton streng nach Text und Schriftart
Verwenden Sie die Funktion intrinsicContentSize
um die genaue Größe eines UIButton-Textes basierend auf seiner Schriftart zu ermitteln.
Schnell
button.intrinsicContentSize.width
Ziel c
button.intrinsicContentSize.width;
Bild einstellen
Schnell
button.setImage(UIImage(named:"test-image"), forState: .normal)
Ziel c
[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateNormal];
Mehrere Kontrollzustände
Sie können auch ein Bild für mehrere UIControlStates
, um beispielsweise dasselbe Bild für den Status " Selected
und " Highlighted
UIControlStates
:
Schnell
button.setImage(UIImage(named:"test-image"), forState:[.selected, .highlighted])
Ziel c
[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateSelected|UIControlStateHighlighted];