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:

voer hier de afbeeldingsbeschrijving in

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow