Поиск…


Вступление

UIButton : UIControl перехватывает события касания и отправляет сообщение о действии целевому объекту при его прослушивании. Вы можете установить название, изображение и другие свойства внешнего вида кнопки. Кроме того, вы можете указать другой вид для каждого состояния кнопки.

замечания

Типы кнопок

Тип кнопки определяет ее внешний вид и поведение. После создания кнопки вы не можете изменить ее тип. Наиболее часто используемыми типами кнопок являются пользовательские и системные типы, но при необходимости используются другие типы

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

При создании пользовательской кнопки, которая является кнопкой с типом custom, изначально на кадре кнопки устанавливаются (0, 0, 0, 0). Прежде чем добавлять кнопку в свой интерфейс, вы должны обновить фрейм до более подходящего значения.

Создание UIButton

UIButtons можно инициализировать в кадре:

стриж

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

Цель C

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

Конкретный тип UIButton можно создать следующим образом:

стриж

let button = UIButton(type: .Custom) 

Цель C

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

где type - type UIButtonType :

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

Установить заголовок

стриж

button.setTitle(titleString, forState: controlState)

Цель C

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

Чтобы установить заголовок по умолчанию на «Hello, World!»

стриж

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

Цель C

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

Установить цвет заголовка

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

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

Чтобы установить цвет заголовка в синий

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

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

Горизонтальное выравнивание содержимого

стриж

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

Цель 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;

Получение метки заголовка

Базовый заголовок заголовка, если таковой существует, может быть извлечен с использованием

стриж

var label: UILabel? = button.titleLabel

Цель C

UILabel *label = button.titleLabel;

Это можно использовать для установки шрифта метки заголовка, например

стриж

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

Цель C

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

Отключение UIButton

Кнопка может быть отключена

стриж

myButton.isEnabled = false

Objective-C:

myButton.enabled = NO;

Кнопка станет серой:

введите описание изображения здесь

Если вы не хотите кнопку , чтобы изменить внешний вид при отключении набора adjustsImageWhenDisabled к false / NO

Добавление действия в UIButton через код (программно)

Чтобы добавить метод к кнопке, сначала создайте метод действия:

Objective-C

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

стриж

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

Теперь, чтобы добавить этот метод действий к вашей кнопке, вы должны написать следующую строку кода:

Цель C

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

стриж

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

Для параметра ControlEvents действительны все члены ENUM UIControlEvents .

Настройка шрифта

стриж

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

Цель C

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

Прикрепление метода к кнопке

Чтобы добавить метод к кнопке, сначала создайте метод действия:

Objective-C

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

}

стриж

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

Теперь, чтобы добавить этот метод действий к вашей кнопке, вы должны написать следующую строку кода:

Цель C

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

стриж

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

Для ControlEvents действительны все члены ENUM UIControlEvents .

Получите размер UIButton строго на основе его текста и шрифта

Чтобы получить точный размер текста UIButton на основе его шрифта, используйте функцию intrinsicContentSize .

стриж

button.intrinsicContentSize.width

Objective-C

button.intrinsicContentSize.width;

Установить изображение

стриж

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

Цель C

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

Несколько состояний управления

Вы также можете установить изображение для нескольких UIControlStates , например , чтобы установить тот же образ для Selected и Highlighted состояний:

стриж

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

Цель C

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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow