之前提过到一种方法是利用frame属性来移动按钮位置的上下左右,也可以用center(中点)来移动按钮的位置
[self btnClickWithBlock :^{
// 获取frame的值
//利用frame移动按钮
//CGRect frame = _button.frame;
//利用center移动按钮
//方法和frame差不多
CGPoint center =_button.center;
// 控制上下左右(x,y)的值,可以用if else语句,也可以用switch语句
// if else 语句的用法
//获得参数的值,不能用点语法sender.tag,要用get语法
/*
if([sender tag] == 1){
frame.origin.y -= 20;
}else if([sender tag] == 2){
frame.origin.x += 20;
}else if([sender tag] == 3){
frame.origin.y += 20;
}else if([sender tag] == 4){
frame.origin.y -= 20;
}
// 这个20也可以拿出来,两种方式,宏定义和定义变量,这样做得目的是,如果要修改这个值,可以一步就修改了,不用在一个一个修改。宏定义要卸载引用文件的位置,可以控制整个文件,一般都写宏定义,
//CGFloat delta = 20;
//可以把[sender tag]提前出来,设置为变量
NSInteger tag = [sender tag];
if(tag == 1){
frame.origin.y -= kdelta;
}else if(tag == 2){
frame.origin.x += kdelta;
}else if(tag == 3){
frame.origin.y += kdelta;
}else if(tag == 4){
frame.origin.y -= kdelta;
}
*/
//switch语法
//center,就是利用中点的移动来移动按钮
switch([sender tag]){
case 1:
// 这里不要origin,因为center是CGPoin属性,直接就是x y
center.y -= kdelta;
//frame.origin.y -= kdelta;
break;
case 2:
// 这里不要origin,因为center是CGPoin属性,直接就是x y
center.x += kdelta;
//frame.origin.y += kdelta;
break;
case 3:
// 这里不要origin,因为center是CGPoin属性,直接就是x y
center.y += kdelta;
//frame.origin.y += kdelta;
break;
case 4:
// 这里不要origin,因为center是CGPoin属性,直接就是x y
center.x -= kdelta;
//frame.origin.y -= kdelta;
break;
default:
break;
}
// 把frame在赋值给 _button.frame
_button.center = center;
}];