Поиск…
Вступление
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];