/*
1.基本功能实现
2.对代码优化:
尽量让重复的代码只出现一次
*/
它无缘无故的跑去了( 02-按钮操作这个项目)里面了
//枚举本质上就是整数,定义的时候,如果只定义了第一个数值,后续的数值会依次递增
//枚举类型是解决魔法数字比较常用的手段
//使用宏定义魔法数字
#define kMovingDelta 20
typedef enum {
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight
} kMovingDir;
全代码
#import "ViewController.h"
//枚举本质上就是整数,定义的时候,如果只定义了第一个数值,后续的数值会依次递增
//枚举类型是解决魔法数字比较常用的手段
//使用宏定义魔法数字
#define kMovingDelta 20
typedef enum {
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight
} kMovingDir;
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *iconButton;
@end
@implementation ViewController
/*
让重复的代码只出现一次
*/
- (IBAction)move:(UIButton *)button
{
//修改位置可以通过frame
//在OC中,不允许直接修改"对象"的"结构体属性"的成员
//但是允许修改"结构体属性"的"成员"
//如果要修改对象的结构体属性,需要三个步骤
//1.取出button的frame
CGRect frame = self.iconButton.frame;
//2.根据按钮的类型,判断移动的方向,再修改结构体的成员
//这些叫做魔法数字 我写一些数字,你猜不出来
//magic number魔法数字
//如何避免魔法数字
switch (button.tag) {
case kMovingDirTop: // 上
frame.origin.y -= kMovingDelta;
break;
case kMovingDirBottom: // 下
frame.origin.y += kMovingDelta;
break;
case kMovingDirLeft: // 左
frame.origin.x -= kMovingDelta;
break;
case kMovingDirRight: // 右
frame.origin.x += kMovingDelta;
break;
default:
break;
}
//3.重新为对象的结构体属性赋值
self.iconButton.frame = frame;
}
@end