Видео урок 25 Buttons находится здесь.
В этом уроке рассказывается как создавать кнопки программно (в коде) и с помощью сториборд.
Для примера создания
UIButton наследник UIView, поэтому большинство моментов уже рассмотрено.
Создается кнопка настраиваемая (custom)
Надписи в нормальном режиме
В этом уроке рассказывается как создавать кнопки программно (в коде) и с помощью сториборд.
Для примера создания
UIButton наследник UIView, поэтому большинство моментов уже рассмотрено.
UIButton * button =[UIButton buttonWithType:UIButtonTypeCustom];
Размер и положение кнопки
button.frame=CGRectMake(200, 200, 200, 200);
Фон
button.backgroundColor=[UIColor lightGrayColor];
[button setTitle:@"Button" forState:UIControlStateNormal];
И при нажатии
[button setTitle:@"Button Pressed" forState:UIControlStateHighlighted];
Цвет надписи при нормальном состоянии
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
Цвет надписи при нажатии
[button setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];
Установка кнопки на основную вью:
[self.view addSubview:button];
Установка шрифта и цвета, текста для нормального состояния
NSDictionary *attributes=@{NSFontAttributeName : [UIFont systemFontOfSize:30],
NSForegroundColorAttributeName: [UIColor orangeColor]};
NSAttributedString *title= [[NSAttributedString alloc] initWithString:@"Button" attributes:attributes];
[button setAttributedTitle:title forState:UIControlStateNormal ];
То же самое для нажатого состояния
NSDictionary *attributes2=@{NSFontAttributeName : [UIFont systemFontOfSize:20],
NSForegroundColorAttributeName: [UIColor blackColor]};
NSAttributedString *title2= [[NSAttributedString alloc] initWithString:@"Button" attributes:attributes2];
[button setAttributedTitle:title2 forState:UIControlStateHighlighted ];
Можно установить отступы для надписи
UIEdgeInsets insets=UIEdgeInsetsMake(100, 100, 0, 0);
button.titleEdgeInsets=insets;
Установка обработчиков нажатий на кнопку
[button addTarget:self action:@selector(actionTest:event:) forControlEvents:UIControlEventTouchUpInside];
Обработчик срабатывает когда пользователь нажал и отпустил кнопку в пределах кнопки.
[button addTarget:self action:@selector(actionTestOutSide:) forControlEvents:UIControlEventTouchUpOutside];
Обработчик срабатывает когда пользователь нажал кнопку и отпустил за пределами кнопки
Сами обработчики нажатий
-(void) actionTest:(UIButton *) but event:(UIEvent *) event {
NSLog(@"Button Pressed Inside!");
}
-(void) actionTestOutSide:(UIButton *) but{
NSLog(@"Button Pressed OutSide!");
}
Если создавать кнопки через сторибоард обработчик создаются автоматически
- (IBAction)actionTest2:(UIButton *)sender;
-(IBAction) actionTest2TouchDown:(UIButton *)sender;
Так же в этом уроке рассматривается UILabel:
При создании в сорибоард - аутлет
@property (weak, nonatomic) IBOutlet UILabel *indicatorLabel;
При создании в коде
UILabel * label=[UILabel alloc] initWithFrame:(rect)
Чтобы изменить текст в Label
self.indicatorLabel.text=[NSString stringWithFormat:@"%@ ",@(sender.tag)];
Домашнее задание к уроку 25 Buttons - Кнопки
Ученик.
1. Создайте и разместите кнопки цифр и операторов, создайте нужные акшины
2. Добавьте лейбл и создайте соответствующий проперти
3. По нажатию на кнопку на индикатор должна выводиться либо цифра, либо оператор (никаких вычислений - выводим просто значения кнопок)
Студент.
4. Наведите более / менее красоту, можете насоздавать линий (вьюхи с малой шириной)б ставить бэкграундыб используйте картинки если надо и тд. - проявите творчество :)
5. Сделайте так, чтобы когда нажимаешь на цифровую кнопку, то число росло
6. Сделайте кнопку сброса
Мастер.
7. Сохраняйте вводимое число
8. Первую операцию тоже надо сохранить, пока не ввели второе число (используйте енумы!)
9. Когда нажимаешь равно то первое число выболняет операцию над вторым и выводится результат
10. После того, как результат вывелся на экран, он автоматом становиться первым числом и к нему уже можно прибавлять, вычитать и т.д. - как в калькуляторе
Супермен
11. Добавьте точку, теперь можно вводить и дробное число, точка должна работать также, как и точка на обычном калькуляторе (имею в виду, что двух точек в числе быть не может в случае повторного нажатия)
12. С дробным вводом будет посложнее - задание для настоящих суперменов :)
Комментариев нет:
Отправить комментарий