NSTimer是个非常非常强大的时间定时器,至于它强大到哪我也不知道。从之前使用NSTimer的情况看,NSTimer是有稍微的延时的,所以在做NSTimer与UI相关的操作时,画面可能没有想象中的流畅,最好在系统不繁忙时启用NSTimer。小朋友们下面来看点动画片
.h文件
@property(nonatomic,retain)NSTimer *timer;
@property(nonatomic,retain)UIImageView *moveImage;
.m
//timer设置
-(void)timerFire
{
if(!self.moveImage){
self.moveImage = [[UIImageView alloc]initWithFrame:CGRectMake(100, 180, 120, 5)];//要做动画的小图片
self.moveImage.image = [UIImage imageNamed:@"move.png"];
self.moveImage.alpha = 0;// 这里置零是为了掩饰页面切换较慢时的卡顿,使小图片隐藏,之后的动画中再显示,看起来流畅。没卡顿问题的可以不设置
[self.view addSubview:self.moveImage];
}
if(!self.timer){
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(doMove) userInfo:nil repeats:YES];
[self.timer fire];
}
}
//启动动画
-(void)doMove
{
self.moveImage.alpha = 1;//可以不写的
[UIView animateWithDuration:0.75 animations:^{//这里第一个动画往下移动
self.moveImage.frame = CGRectMake(100, 380, 120, 5);//直接改center也可以改变位置
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.75 animations:^{//接着0.75秒后第二个动画往上移回原位
self.moveImage.frame = CGRectMake(100,180, 120, 5);
} completion:nil];
}];
}
//停止动画
-(void)stopMove
{
if (self.timer != nil && [self.timer isValid]) {
[self.timer invalidate];
}
self.timer = nil;//这个一定要处理好,timer会对self做retain 的
}