一、宏定义
项目:TimerControl
//宏定义:#define 宏名 值
#define WINDOW_CENTER_X self.window.center.x
#import "AppDelegate.h"
规范:
1.一般定义在.m文件的#import上,也可以定义在.h文件中;
2.宏名为大写
二、动画
项目:TimerControl
1.Timer
1.1 [timer fire];
1.2 求余运算:int yuShu = _count % 3;
//1.NSTimer
//创建一个定时器
//参数:
//TimeInterval:时间间隔
//target:目标对象
//selector:方法
//userInfo:用户信息
//repeats:重复
//解释:每间隔一段时间,由谁是否重复性的做某事.
//每间隔1s,由self重复(YES)执行一次onTimer方法
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
//fire:立即开启定时器
[timer fire];
return YES;
}
- (void)onTimer
{
_count = _count + 1;
//求余运算
int yuShu = _count % 3;
NSLog(@"余数 = %d",yuShu);
if (yuShu == 0)
{
self.window.backgroundColor = [UIColor redColor];
}
else if (yuShu == 1)
{
self.window.backgroundColor = [UIColor greenColor];
}
else
{
self.window.backgroundColor = [UIColor blueColor];
}
}
三、火焰动画练习,方法viewWithTag
项目:FireAnimationTimer_Teacher
UIImageView *fireImgView.tag = 100;
UIImageView *fireImgView = (UIImageView *)[self.window viewWithTag:100];
1.未将fireImgView声明为全局变量,就是用此方法获取相应对象。
2.使用强制类型转换。
四、Timer的开启与停止
项目:Timer_Start&Stop
1.静态变量static关键字
//static:静态变量
//只初始化一次,此刻与全局变量效果一样
static int count = 0;
2.1暂停与开始1
概述:
暂停:invalidate:失效的 [_timer invalidate];
开始:
//创建即为开启
_timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(imgChange) userInfo:nil repeats:YES];
原程序:
- (void)stopOrStart
{
//方法1
static int number = 0;
number++;
if (number %2 == 1)
{
//停止
//invalidate:失效的
[_timer invalidate];
//确保安全,将_timer指针置空,彻底废除定时器
_timer = nil;
}
if (number %2 == 0)
{
//开启
//创建即为开启
_timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(imgChange) userInfo:nil repeats:YES];
}
//方法2
if (_timer.isValid == YES)
{
//invalidate:失效的
[_timer invalidate];
//确保安全,将_timer指针置空,彻底废除定时器
_timer = nil;
}
else
{
_timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(imgChange) userInfo:nil repeats:YES];
}
}
2.2暂停与开始2
项目:Button_Start&Stop
//1.方法1
- (void)stopOrStart1
{
if (_isStop == NO)
{
//开始燃烧
_isStop = YES;
}
else if(_isStop == YES)
{
//停止燃烧
_isStop = NO;
}
}
//2.方法2
//!:非运算符
- (void)stopOrStart2
{
if (_isStop == NO)
{
//开始燃烧
}
else if(_isStop == YES)
{
//停止燃烧
}
//!:非运算符
_isStop = !_isStop;
}
五、图片的下降
项目:GoDown_Timer
-(void)goDown:(NSTimer *)timer
{
//timer.userInfo:获取到的值,就是创建定时器时给userInfo赋的值
UIImageView *snowImgView = timer.userInfo;
//改变图片的Y坐标
//a.获取图片的矩形块
CGRect snowRect = snowImgView.frame;
//b.改变frame的y坐标
snowRect.origin.y+=10;
//c.将修改后的fram赋值给snowImgView
snowImgView.frame = snowRect;
//不能直接使用此方法:
//snowImgView.frame.origin.y++;
//d.图片到屏幕底部,停止
if (snowImgView.frame.origin.y > self.window.bounds.size.height-60)
{
[timer invalidate];
}
}