按钮操作Demo
//
// ViewController.m
// 按钮操作
#import "ViewController.h"
/**
使用git
1.创建项目时,勾选Git
2.开发告一段落,选择"source Control",并编写注释
*/
// 枚举类型实质上就是一个整数,作用就是用来代替魔法数字
// 枚举类型中,指定了第一个整数之后,后面的数字会递增
typedef enum
{
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight
} kMovingDir;
#define kMovingDelta 60;
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *headImageView;
@end
@implementation ViewController
// 在OC中绝大多数的控件的监听方法的第一个参数就是控件本身
//- (IBAction)left:(UIButton *)button {
// NSLog(@"___");
//}
- (IBAction)move:(UIButton *)button {
// 通过frame修改head位置
// 在OC中不允许直接修改"对象"的结构体属性的"成员"
// 允许修改对象的结构体属性
// 1.取出结构体属性
// CGRect rect = self.headImageView.frame;
CGPoint p = self.headImageView.center;
// magic number魔法数字,其他程序员看到代码的时候,不知道是什么意思
switch (button.tag) {
case kMovingDirTop:
// 2.修改结构体成员
// rect.origin.y -= kMovingDelta;
p.y -= kMovingDelta;
break;
case kMovingDirBottom:
// 2.修改结构体成员
// rect.origin.y += kMovingDelta;
p.y += kMovingDelta;
break;
case kMovingDirLeft:
// 2.修改结构体成员
// rect.origin.x -= kMovingDelta;
p.x -= kMovingDelta;
break;
case kMovingDirRight:
// 2.修改结构体成员
// rect.origin.x += kMovingDelta;
p.x += kMovingDelta;
break;
}
// 设置对象的结构体属性
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
// self.headImageView.frame = rect;
self.headImageView.center = p;
[UIView commitAnimations];
// self.headImageView.frame.origin.y = self.headImageView.frame.origin.y - 20;
}
- (IBAction)zoom:(UIButton *)button {
CGRect rect = self.headImageView.bounds;
// 在C语言中,关于BOOL的判断:非零即真
if (button.tag) {
rect.size.width += 50;
rect.size.height += 50;
} else {
rect.size.width -= 50;
rect.size.height -= 50;
}
// 首尾动画
// beginAnimations表示此后的代码要参与到动画中
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3.0];
self.headImageView.bounds = rect;
self.headImageView.alpha = 0;
// commitAnimations将beginAnimations之后的所有动画提交并生成动画
[UIView commitAnimations];
}
@end
下面是全代码实现
// ViewController.m
// 按钮操作之全代码实现
#import "ViewController.h"
typedef enum
{
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight
} kMovingDir;
@interface ViewController ()
@property (nonatomic,strong) UIButton *headImageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.headImageView = [[UIButton alloc] init];
self.headImageView.frame = CGRectMake(80, 80, 100, 100);
[self.headImageView setTitle:@"gem" forState:UIControlStateNormal];
[self.headImageView setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[self.headImageView setBackgroundImage:[UIImage imageNamed:@"邓紫棋2"] forState:UIControlStateNormal];
[self.view addSubview:self.headImageView];
[self.headImageView setTitle:@"邓紫棋" forState:UIControlStateHighlighted];
[self.headImageView setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
[self.headImageView setBackgroundImage:[UIImage imageNamed:@"邓紫棋3"] forState:UIControlStateHighlighted];
[self.view addSubview:self.headImageView];
UIButton *up = [[UIButton alloc] init];
up.frame = CGRectMake(57, 291, 40, 40);
up.tag = 10;
[up setBackgroundImage:[UIImage imageNamed:@"top_normal"] forState:UIControlStateNormal];
[self.view addSubview:up];
[up setBackgroundImage:[UIImage imageNamed:@"top_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:up];
[up addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];
UIButton *down = [[UIButton alloc] init];
down.frame = CGRectMake(57, 387, 40, 40);
down.tag = 11;
[down setBackgroundImage:[UIImage imageNamed:@"bottom_normal"] forState:UIControlStateNormal];
[self.view addSubview:down];
[down setBackgroundImage:[UIImage imageNamed:@"bottom_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:down];
[down addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];
UIButton *left = [[UIButton alloc] init];
left.frame = CGRectMake(16, 339, 40, 40);
left.tag = 12;
[left setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
[self.view addSubview:left];
[left setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:left];
[left addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];
UIButton *right = [[UIButton alloc] init];
right.frame = CGRectMake(96, 339, 40, 40);
right.tag = 13;
[right setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
[self.view addSubview:right];
[right setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:right];
[right addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];
UIButton *plus = [[UIButton alloc] init];
plus.frame = CGRectMake(167, 339, 40, 40);
plus.tag = 1;
[plus setBackgroundImage:[UIImage imageNamed:@"plus_normal"] forState:UIControlStateNormal];
[self.view addSubview:plus];
[plus setBackgroundImage:[UIImage imageNamed:@"plus_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:plus];
[plus addTarget:self action:@selector(zoom:) forControlEvents:UIControlEventTouchUpInside];
UIButton *minus = [[UIButton alloc] init];
minus.frame = CGRectMake(234, 339, 40, 40);
[minus setBackgroundImage:[UIImage imageNamed:@"minus_normal"] forState:UIControlStateNormal];
[self.view addSubview:minus];
[minus setBackgroundImage:[UIImage imageNamed:@"minus_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:minus];
[minus addTarget:self action:@selector(zoom:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)move:(UIButton *)button
{
CGPoint p = self.headImageView.center;
switch (button.tag) {
case kMovingDirTop:
p.y -= 10;
break;
case kMovingDirBottom:
p.y += 10;
break;
case kMovingDirLeft:
p.x -= 10;
break;
case kMovingDirRight:
p.x += 10;
break;
}
self.headImageView.center = p;
}
- (void)zoom:(UIButton *)button
{
CGRect rect = self.headImageView.bounds;
if (button.tag) {
rect.size.height += 50;
rect.size.width +=50;
} else {
rect.size.height -= 50;
rect.size.width -= 50;
}
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3.0];
self.headImageView.bounds = rect;
self.headImageView.alpha = 0;
[UIView commitAnimations];
}
@end