改变位置或者改变大小的时候,如果改变幅度大 想让他渐变而不是瞬间改变 所以要用动画
介绍一下头尾式
1.单纯位置移动
- (IBAction)move:(UIButton*)btn
{
// center (x=200, y=10)
// center (x=200, y=210)
// 0.开始动画
[UIView beginAnimations:nilcontext:nil];
// 动画持续2秒
[UIView setAnimationDuration:2.0];
// 1.取出原来的属性
CGPoint tempCenter = self.head.center;
// 2.修改临时属性
CGFloat delta = 200;
switch (btn.tag) {
case10:// 上
tempCenter.y-= delta;
break;
case20:// 下
tempCenter.y+= delta;
break;
case30:// 左
tempCenter.x-= delta;
break;
case40:// 右
tempCenter.x+= delta;
break;
}
// 3.重新赋值
self.head.center= tempCenter;
// 4.提交动画
[UIView commitAnimations ];
}
{
// center (x=200, y=10)
// center (x=200, y=210)
// 0.开始动画
[UIView beginAnimations:nilcontext:nil];
// 动画持续2秒
[UIView setAnimationDuration:2.0];
// 1.取出原来的属性
CGPoint tempCenter = self.head.center;
// 2.修改临时属性
CGFloat delta = 200;
switch (btn.tag) {
case10:// 上
tempCenter.y-= delta;
break;
case20:// 下
tempCenter.y+= delta;
break;
case30:// 左
tempCenter.x-= delta;
break;
case40:// 右
tempCenter.x+= delta;
break;
}
// 3.重新赋值
self.head.center= tempCenter;
// 4.提交动画
[UIView commitAnimations ];
}
2.边走边放大的动画
-
-(
IBAction)moveAndBig
{// 1.开启动画
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
// 2.修改属性
CGRect tempF = self.head.frame;
tempF.origin.x += 50;
tempF.origin.y += 100;
tempF.size.width += 50;
tempF.size.height += 50;
self.head.frame = tempF;
// 3.提交动画
[UIView commitAnimations ];
}
从[UIView beginAnimations:nil context:nil];开始
[
UIView
setAnimationDuration
:
2.0
];动画的播放时间 传的时候是个double类型,单位是秒,建议做法可以根据图片的个数num乘上每张图片的停留时间,例如0.05秒播放一帧,播放的速度更为合理。
到[UIView commitAnimations];为止