Szukaj…
Wprowadzenie
UIButton : UIControl przechwytuje dotknąć wydarzenia i wysyła wiadomość działania do obiektu docelowego, gdy jest na podsłuchu. Możesz ustawić tytuł, obraz i inne właściwości przycisku. Ponadto można określić inny wygląd dla każdego stanu przycisku.
Uwagi
Rodzaje przycisków
Typ przycisku określa jego podstawowy wygląd i zachowanie. Po utworzeniu przycisku nie można zmienić jego typu. Najczęściej używanymi typami przycisków są typy niestandardowe i systemowe, ale w razie potrzeby używaj innych typów
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.
Podczas tworzenia przycisku niestandardowego - czyli przycisku o niestandardowym typie - ramka przycisku jest początkowo ustawiona na (0, 0, 0, 0). Przed dodaniem przycisku do interfejsu należy zaktualizować ramkę do bardziej odpowiedniej wartości.
Tworzenie przycisku UIB
Przyciski UIB mogą być inicjowane w ramce:
Szybki
let button = UIButton(frame: CGRect(x: x, y: y, width: width, height: height)
Cel C
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];
Można utworzyć określony typ przycisku UIButton w następujący sposób:
Szybki
let button = UIButton(type: .Custom)
Cel C
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
gdzie type
to UIButtonType
:
enum UIButtonType : Int {
case Custom
case System
case DetailDisclosure
case InfoLight
case InfoDark
case ContactAdd
static var RoundedRect: UIButtonType { get }
}
Ustaw tytuł
Szybki
button.setTitle(titleString, forState: controlState)
Cel C
[button setTitle:(NSString *) forState:(UIControlState)];
Aby ustawić domyślny tytuł na „Witaj, świecie!”
Szybki
button.setTitle("Hello, World!", forState: .normal)
Cel C
[button setTitle:@"Hello, World!" forControlState:UIControlStateNormal];
Ustaw kolor tytułu
//Swift
button.setTitleColor(color, forControlState: controlState)
//Objective-C
[button setTitleColor:(nullable UIColor *) forState:(UIControlState)];
Aby ustawić kolor tytułu na niebieski
//Swift
button.setTitleColor(.blue, for: .normal)
//Objective-C
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]
Poziome wyrównanie zawartości
Szybki
//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
Cel 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;
Uzyskiwanie etykiety tytułu
Podstawową etykietę tytułu, jeśli taka istnieje, można pobrać za pomocą
Szybki
var label: UILabel? = button.titleLabel
Cel C
UILabel *label = button.titleLabel;
Można to wykorzystać na przykład do ustawienia czcionki etykiety tytułu
Szybki
button.titleLabel?.font = UIFont.boldSystemFontOfSize(12)
Cel C
button.titleLabel.font = [UIFont boldSystemFontOfSize:12];
Wyłączanie UIButton
Przycisk można wyłączyć za pomocą
Szybki
myButton.isEnabled = false
Cel C:
myButton.enabled = NO;
Przycisk stanie się szary:
Jeśli nie chcesz, aby wygląd przycisku zmieniał się po wyłączeniu, dostosowuje adjustsImageWhenDisabled
na false
/ NO
Dodawanie akcji do UIButton za pomocą kodu (programowo)
Aby dodać metodę do przycisku, najpierw utwórz metodę akcji:
Cel C
-(void)someButtonAction:(id)sender {
// sender is the object that was tapped, in this case its the button.
NSLog(@"Button is tapped");
}
Szybki
func someButtonAction() {
print("Button is tapped")
}
Teraz, aby dodać tę metodę akcji do przycisku, musisz napisać następujący wiersz kodu:
Cel C
[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];
Szybki
yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .TouchUpInside)
Dla parametru ControlEvents wszyscy członkowie ENUM
UIControlEvents są poprawni.
Ustawienie czcionki
Szybki
myButton.titleLabel?.font = UIFont(name: "YourFontName", size: 20)
Cel C
myButton.titleLabel.font = [UIFont fontWithName:@"YourFontName" size:20];
Dołączanie metody do przycisku
Aby dodać metodę do przycisku, najpierw utwórz metodę akcji:
Cel C
-(void) someButtonAction{
NSLog(@"Button is tapped");
}
Szybki
func someButtonAction() {
print("Button is tapped")
}
Teraz, aby dodać tę metodę akcji do przycisku, musisz napisać następujący wiersz kodu:
Cel C
[yourButtonInstance addTarget:self action:@selector(someButtonAction) forControlEvents:UIControlEventTouchUpInside];
Szybki
yourButtonInstance.addTarget(self, action: #selector(someButtonAction), forControlEvents: .touchUpInside)
W przypadku ControlEvents wszyscy członkowie ENUM
UIControlEvents są poprawni.
Uzyskaj rozmiar UIButton ściśle w oparciu o jego tekst i czcionkę
Aby uzyskać dokładny rozmiar tekstu UIButton na podstawie jego czcionki, użyj funkcji intrinsicContentSize
.
Szybki
button.intrinsicContentSize.width
Cel C
button.intrinsicContentSize.width;
Ustaw obraz
Szybki
button.setImage(UIImage(named:"test-image"), forState: .normal)
Cel C
[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateNormal];
Wiele stanów kontroli
Możesz także ustawić obraz dla wielu UIControlStates
, na przykład, aby ustawić ten sam obraz dla stanu Selected
i Highlighted
:
Szybki
button.setImage(UIImage(named:"test-image"), forState:[.selected, .highlighted])
Cel C
[self.button setImage:[UIImage imageNamed:@"test-image"] forState:UIControlStateSelected|UIControlStateHighlighted];