Sök…


Introduktion

UIB-knapp : UIControl avlyssnar beröringshändelser och skickar ett åtgärdsmeddelande till ett målobjekt när det knackas. Du kan ställa in titelns, bildens och andra utseendegenskaper på en knapp. Dessutom kan du ange ett annat utseende för varje knapptillstånd.

Anmärkningar

Knapptyper

En knapps typ definierar dess grundläggande utseende och beteende. När du har skapat en knapp kan du inte ändra typ. De mest använda knapptyperna är anpassade och systemtyper, men använd de andra typerna när det är lämpligt

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

När du skapar en anpassad knapp - det vill säga en knapp med typen anpassad - ställs knappens ram in på (0, 0, 0, 0) initialt. Innan du lägger till knappen i ditt gränssnitt ska du uppdatera ramen till ett mer lämpligt värde.

Skapa en UIB-knapp

UIB-knappar kan initieras i en ram:

Snabb

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

Mål C

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

En specifik typ av UIB-knapp kan skapas så här:

Snabb

let button = UIButton(type: .Custom) 

Mål C

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

där type är en UIButtonType :

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

Ställ in titel

Snabb

button.setTitle(titleString, forState: controlState)

Mål C

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

För att ställa in standardtiteln till "Hej, världen!"

Snabb

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

Mål C

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

Ställ in titelfärg

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

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

För att ställa in titelfärgen till blå

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

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

Horisontellt inriktning av innehåll

Snabb

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

Mål 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;

Få titeln etiketten

Den underliggande titeletiketten, om den finns, kan hämtas med

Snabb

var label: UILabel? = button.titleLabel

Mål C

UILabel *label = button.titleLabel;

Detta kan t.ex. användas för att ställa in typsnittet på titeletiketten

Snabb

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

Mål C

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

Inaktiverar en UIB-knapp

En knapp kan inaktiveras av

Snabb

myButton.isEnabled = false

Objective-C:

myButton.enabled = NO;

Knappen blir grå:

ange bildbeskrivning här

Om du inte vill att knappens utseende ska ändras när inaktiverad adjustsImageWhenDisabled till false / NO

Lägga till en åtgärd till en UIB-knapp via kod (programmatiskt)

För att lägga till en metod i en knapp, skapar du först en åtgärdsmetod:

Objective-C

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

Snabb

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

För att lägga till den här åtgärdsmetoden till din knapp måste du skriva följande kodrad:

Mål C

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

Snabb

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

För parameter ControlEvents är alla medlemmar i ENUM UIControlEvents giltiga.

Ställer in teckensnitt

Snabb

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

Mål C

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

Fästa en metod till en knapp

För att lägga till en metod i en knapp, skapar du först en åtgärdsmetod:

Objective-C

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

}

Snabb

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

För att lägga till den här åtgärdsmetoden till din knapp måste du skriva följande kodrad:

Mål C

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

Snabb

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

För ControlEvents är alla medlemmar i ENUM UIControlEvents giltiga.

Få UIButtons storlek strikt baserat på dess text och typsnitt

För att få den exakta storleken på en UIButtons text baserat på dess teckensnitt använder du funktionen intrinsicContentSize .

Snabb

button.intrinsicContentSize.width

Objective-C

button.intrinsicContentSize.width;

Ställ in bild

Snabb

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

Mål C

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

Flera kontrollstater

Du kan också ställa in en bild för flera UIControlStates , till exempel för att ställa in samma bild för det Selected och Highlighted tillståndet:

Snabb

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

Mål C

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow