IOS开发之——绘制雪花(79)

一 概述

本文通过自定义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];

}
效果图