0%
一 概述
本文通过自定义View,实现下雪的效果
- 刚开始时,雪花位于屏幕原点(左上角)
- 每隔0.1s,雪花的高度增加5向下移动
- 到达屏幕底部时,重新回到屏幕原点(左上角)
二 功能实现
2.1 设置雪花移动的高度
1 2 3
| @interface MyView () @property (nonatomic,assign) CGFloat snowY; @end
|
2.2 绘制雪花降落时的偏移
1 2 3 4 5 6 7 8 9 10
| - (void)drawRect:(CGRect)rect { // Drawing code _snowY+=5; UIImage *image=[UIImage imageNamed:@"雪花"]; [image drawAtPoint:CGPointMake(0, _snowY)]; //[image drawAtPoint:CGPointZero]; if (_snowY>=520) { _snowY=0; } }
|
2.3 视图加载后间隔0.1s绘制图形
2.3.1 定时功能绘制
代码
1
| [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(setNeedsDisplay) userInfo:nil repeats:YES];
|
效果图(有卡顿)
![]()
2.3.2 屏幕刷新时绘制
代码
1 2 3 4 5 6 7
| - (void)awakeFromNib { //屏幕刷新的时候调用 CADisplayLink *link=[CADisplayLink displayLinkWithTarget:self selector:@selector(setNeedsDisplay)]; [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; }
|
效果图
![]()