AJ学IOS(33)UI之Quartz2D雪花飘落效果刷帧
2015-11-29 00:42
525 查看
AJ分享,必须精品
可以加入随机数实现真的飘落效果哦。
-(void)awakeFromNib
-(id)initWithCoder:(NSCoder *)aDecoder
提示:如果view是从xib或storyboard中创建可以调用awakefromnib方法,归档。从文件创建view,其实会先调用initwithcoder这个方法。xib和storyboard也是文件。
上面两个方法,-(id)initWithCoder:(NSCoder *)aDecoder会先调用。实现该方法需要实现NSCoding协议,由于创建的UIView默认就已经实现了该协议。
可以进入到头文件查看:
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateImage) userInfo:nil repeats:YES];
说明: NSTimer一般用于定时的更新一些非界面上的数据,告诉多久调用一次
第二个:
说明: CADisplayLink刷帧,默认每秒刷新60次。该定时器创建之后,默认是不会执行的,需要把它加载到消息循环中
效果:
可以加入随机数实现真的飘落效果哦。
代码:
[code]-(id)initWithCoder:(NSCoder *)aDecoder { //请注意这里一定要先初始化父类的构造方法 if (self=[super initWithCoder:aDecoder]) { NSLog(@"initWithCoder:"); //NSTimer一般用于定时的更新一些非界面上的数据,告诉多久调用一次 //使用定时器,使用该定时器会出现卡顿的现象 // [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateImage) userInfo:nil repeats:YES]; // CADisplayLink刷帧,默认每秒刷新60次 //该定时器创建之后,默认是不会执行的,需要把它加载到消息循环中 CADisplayLink *display= [CADisplayLink displayLinkWithTarget:self selector:@selector(updateImage)]; [display addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; } return self; } -(void)updateImage { //调用该方法重绘画面 [self setNeedsDisplay]; } -(void)awakeFromNib { NSLog(@"awakeFromNib"); } - (void)drawRect:(CGRect)rect { //把图片绘制到view上 //每次调用该方法对画面进行重绘时,imageY的值就+5 self.imageY+=5; //判断,当雪花超出屏幕的时候,让图片从头开始降落 if (self.imageY>rect.size.height) { self.imageY=0; } UIImage *image=[UIImage imageNamed:@"snow"]; [image drawAtPoint:CGPointMake(188, self.imageY)]; UIImage *image2=[UIImage imageNamed:@"cat"]; [image2 drawAtPoint:CGPointMake(10, self.imageY)]; }
重要说明
(1)下面两个方法的调用顺序-(void)awakeFromNib
-(id)initWithCoder:(NSCoder *)aDecoder
提示:如果view是从xib或storyboard中创建可以调用awakefromnib方法,归档。从文件创建view,其实会先调用initwithcoder这个方法。xib和storyboard也是文件。
上面两个方法,-(id)initWithCoder:(NSCoder *)aDecoder会先调用。实现该方法需要实现NSCoding协议,由于创建的UIView默认就已经实现了该协议。
可以进入到头文件查看:
定时器
第一个:[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateImage) userInfo:nil repeats:YES];
说明: NSTimer一般用于定时的更新一些非界面上的数据,告诉多久调用一次
第二个:
[code] CADisplayLink *display= [CADisplayLink displayLinkWithTarget:self selector:@selector(updateImage)]; [display addToRunLoop:[NSRunLoopmainRunLoop] forMode:NSDefaultRunLoopMode];
说明: CADisplayLink刷帧,默认每秒刷新60次。该定时器创建之后,默认是不会执行的,需要把它加载到消息循环中
相关文章推荐
- AJ学IOS(32)UI之Quartz2D矩阵操作和图片剪切
- AJ学IOS(31)UI之Quartz2D图形上下文栈
- AJ学IOS(30)UI之Quartz2D画图片画文字
- AJ学IOS(29)UI之Quartz2D自定义下载控件_画各种图形
- AJ学IOS(28)UI之Quartz2D简单介绍
- AJ学IOS(27)UI之iOSUIKit字符属性NSAttributedString概述
- AJ学IOS(26)UI之iOS抽屉效果小Demo
- AJ学IOS(25)UI之触摸事件
- AJ学IOS(24)UI之注册案例
- AJ学IOS(23)UI之控制器管理
- AJ学IOS(20)UI之UIPickerView_点菜系统
- AJ学IOS(19)UI之QQ好友列表
- AJ学IOS(18)UI之QQ聊天布局_键盘通知实现自动弹出隐藏_自动回复
- AJ学IOS(17)UI之纯代码自定义Cell实现新浪微博UI
- AJ学IOS(16)UI之XIB自定义Cell实现团购UI
- AJ学IOS(15)UI之曾经大热的打砖块小游戏
- AJ学IOS(14)UI之UITableView扩充_表格的修改_(增删移动)
- AJ学IOS(13)UI之UITableView学习(下)汽车名牌带右侧索引
- AJ学IOS(12)UI之UITableView学习(上)LOL英雄联盟练习
- AJ学IOS(11)UI之图片自动轮播