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