ios刷帧动画
1 @implementation NJView 2 3 /* 4 -(void)awakeFromNib 5 { 6 7 NSLog(@"awakeFromNib"); 8 // 创建CADisplayLink, 默认每秒60次 9 CADisplayLink *display = [CADisplayLink displayLinkWithTarget:self selector:@selector(updataImage)]; 10 // 将CADisplayLink加入到消息循环中 11 [display addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; 12 } 13 */ 14 15 16 - (id)initWithCoder:(NSCoder *)aDecoder 17 { 18 if (self = [super initWithCoder:aDecoder]) { 19 NSLog(@"initWithCoder"); 20 21 // NSTimer一般用于定时的更新一些非界面上的数据 22 // [NSTimer scheduledTimerWithTimeInterval: 23 // 0.1 target:self selector:@selector(updataImage) userInfo:nil repeats:YES]; 24 25 // 创建CADisplayLink, 默认每秒60次 26 CADisplayLink *display = [CADisplayLink displayLinkWithTarget:self selector:@selector(updataImage)]; 27 // 将CADisplayLink加入到消息循环中 28 [display addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; 29 30 } 31 return self; 32 } 33 34 - (void)updataImage 35 { 36 [self setNeedsDisplay]; 37 } 38 39 40 - (void)drawRect:(CGRect)rect 41 { 42 CGContextRef ctx = UIGraphicsGetCurrentContext(); 43 // CGContextClearRect(ctx, rect); 44 45 self.imageY += 10; 46 47 if (self.imageY > rect.size.height) { 48 self.imageY = 0; 49 } 50 // Drawing code 51 UIImage *image = [UIImage imageNamed:@"snow"]; 52 [image drawAtPoint:CGPointMake(10, self.imageY)]; 53 54 55 }