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:

wprowadź opis zdjęcia tutaj

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow