Zoeken…
Invoering
UIButton : UIControl onderschept aanraakgebeurtenissen en stuurt een actiebericht naar een doelobject wanneer erop wordt getikt. U kunt de titel, afbeelding en andere weergave-eigenschappen van een knop instellen. Bovendien kunt u voor elke knopstatus een ander uiterlijk opgeven.
Opmerkingen
Knoptypen
Het type van een knop bepaalt het basisuiterlijk en -gedrag. Nadat u een knop hebt gemaakt, kunt u het type niet meer wijzigen. De meest gebruikte knoptypen zijn de typen Aangepast en Systeem, maar gebruik indien nodig de andere 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.
Wanneer u een aangepaste knop maakt (dat is een knop met het type aangepast), wordt het frame van de knop aanvankelijk ingesteld op (0, 0, 0, 0). Voordat u de knop toevoegt aan uw interface, moet u het frame bijwerken naar een meer geschikte waarde.
Een UIButton maken
UIButtons kunnen in een frame worden geïnitialiseerd:
Snel
let button = UIButton(frame: CGRect(x: x, y: y, width: width, height: height)
Doelstelling C
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];
Een specifiek type UIButton kan als volgt worden gemaakt:
Snel
let button = UIButton(type: .Custom)
Doelstelling C
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
waar type
een UIButtonType
:
enum UIButtonType : Int {
case Custom
case System
case DetailDisclosure
case InfoLight
case InfoDark
case ContactAdd
static var RoundedRect: UIButtonType { get }
}
Titel instellen
Snel
button.setTitle(titleString, forState: controlState)
Doelstelling C
[button setTitle:(NSString *) forState:(UIControlState)];
De standaardtitel instellen op "Hallo wereld!"
Snel
button.setTitle("Hello, World!", forState: .normal)
Doelstelling C
[button setTitle:@"Hello, World!" forControlState:UIControlStateNormal];
Titelkleur instellen
//Swift
button.setTitleColor(color, forControlState: controlState)
//Objective-C
[button setTitleColor:(nullable UIColor *) forState:(UIControlState)];
Om de titelkleur in te stellen op blauw
//Swift
button.setTitleColor(.blue, for: .normal)
//Objective-C
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]
Inhoud horizontaal uitlijnen
Snel
//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
Doelstelling 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;
Het titellabel krijgen
Het onderliggende titellabel, indien aanwezig, kan worden opgehaald met
Snel
var label: UILabel? = button.titleLabel
Doelstelling C
UILabel *label = button.titleLabel;
Dit kan bijvoorbeeld worden gebruikt om het lettertype van het titellabel in te stellen
Snel
button.titleLabel?.font = UIFont.boldSystemFontOfSize(12)
Doelstelling C
button.titleLabel.font = [UIFont boldSystemFontOfSize:12];
Een UIButton uitschakelen
Een knop kan worden uitgeschakeld door
Snel
myButton.isEnabled = false
Doelstelling C:
myButton.enabled = NO;
De knop wordt grijs:
Als u niet wilt dat het uiterlijk van de knop verandert wanneer uitgeschakeld, wordt adjustsImageWhenDisabled
ingesteld op false
/ NO
Een actie toevoegen aan een UIButton via code (programmatisch)
Maak eerst een actiemethode om een methode aan een knop toe te voegen:
Doelstelling C
-(void)someButtonAction:(id)sender {
// sender is the object that was tapped, in this case its the button.
NSLog(@"Button is tapped");
}
Snel
func someButtonAction() {
print("Button is tapped")
}
Om deze actiemethode aan uw knop toe te voegen, moet u de volgende coderegel schrijven:
Doelstelling C
[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];
Snel
yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .TouchUpInside)
Voor de parameter ControlEvents zijn alle leden van ENUM
UIControlEvents geldig.
Lettertype instellen
Snel
myButton.titleLabel?.font = UIFont(name: "YourFontName", size: 20)
Doelstelling C
myButton.titleLabel.font = [UIFont fontWithName:@"YourFontName" size:20];
Een methode aan een knop koppelen
Maak eerst een actiemethode om een methode aan een knop toe te voegen:
Doelstelling C
-(void) someButtonAction{
NSLog(@"Button is tapped");
}
Snel
func someButtonAction() {
print("Button is tapped")
}
Om deze actiemethode aan uw knop toe te voegen, moet u de volgende coderegel schrijven:
Doelstelling C
[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];
Snel
yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .touchUpInside)
Voor ControlEvents zijn alle leden van ENUM
UIControlEvents geldig.
Verkrijg de grootte van UIButton strikt op basis van de tekst en het lettertype
Gebruik de functie intrinsicContentSize
om de exacte grootte van de tekst van een UIButton te krijgen op basis van het lettertype.
Snel
button.intrinsicContentSize.width
Doelstelling C
button.intrinsicContentSize.width;
Afbeelding instellen
Snel
button.setImage(UIImage(named:"test-image"), forState: .normal)
Doelstelling C
[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateNormal];
Meerdere controlestaten
U kunt ook een afbeelding instellen voor meerdere UIControlStates
, bijvoorbeeld om dezelfde afbeelding in te stellen voor de status Selected
en Highlighted
:
Snel
button.setImage(UIImage(named:"test-image"), forState:[.selected, .highlighted])
Doelstelling C
[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateSelected|UIControlStateHighlighted];