iOS学习笔记-057.自定义View04——刷帧动画

  • 自定义View04刷帧动画
    • 一视图重新绘制的方法
    • 二基本刷帧代码
      • ViewControllerm
      • WMViewm
    • 三基本刷帧图示
    • 四两个定时器
    • 五刷帧动画代码
    • 六刷帧动画图示

自定义View04——刷帧动画

一、视图重新绘制的方法

二、基本刷帧代码

ViewController.m

//
//  ViewController.m
//  03_UIView46_刷帧
//
//  Created by 杞文明 on 2016/04/15 07:59:13   星期五
//  Copyright © 2016年 杞文明. All rights reserved.
//

#import "ViewController.h"
#import "WMView.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet WMView *wmView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

//半径改变
- (IBAction)radiusChange:(UISlider *)sender {
    self.wmView.radius = sender.value;
}

@end

WMView.m

//
//  WMView.m
//  03_UIView46_刷帧
//
//  Created by 杞文明 on 2016/04/15 07:59:20   星期五
//  Copyright © 2016年 杞文明. All rights reserved.
//

#import "WMView.h"

@implementation WMView

-(void)awakeFromNib{
    //让其默认有个半径
    self.radius = 10;
}

-(void)setRadius:(float)value{
    _radius = value;
    //通知自定义view重新绘制图形
    [self setNeedsDisplay];
}

- (void)drawRect:(CGRect)rect {
    //1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    //2.绘画
    CGContextAddArc(ctx,rect.size.width/2, rect.size.height/2,_radius, 0, 2*M_PI, 0);
    [[UIColor purpleColor]set];

    //3.渲染
    CGContextFillPath(ctx);
}


@end

三、基本刷帧图示

iOS学习笔记-057.自定义View04——刷帧动画_第1张图片

四、两个定时器

// NSTimer一般用于定时的更新一些非界面上的数据
NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updataImage) userInfo:nil repeats:YES];

// 创建CADisplayLink, 默认每秒60次
CADisplayLink *display = [CADisplayLink displayLinkWithTarget:self selector:@selector(updataImage)];
// 将CADisplayLink加入到消息循环中
[display addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

五、刷帧动画代码

//
//  WMView.m
//  03_UIView47_刷帧动画
//
//  Created by 杞文明 on 2016/04/15 08:08:47   星期五
//  Copyright © 2016年 杞文明. All rights reserved.
//

#import "WMView.h"

@implementation WMView



-(void)awakeFromNib{
    //创建CADisplayLink,默认每秒60次
    CADisplayLink * display = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateImage)];
    //把CADisplayLink加入到信息循环中去
    [display addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
}

//更新这个方法,其实就是重新绘制而已
-(void)updateImage{
    [self setNeedsDisplay];
}

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {

    //1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    //2.绘制
    self.imageY +=5;
    if(self.imageY>=rect.size.height){
        self.imageY = 0;
    }

    //3.渲染
    UIImage *image = [UIImage imageNamed:@"snow"];
    [image drawAtPoint:CGPointMake(10,self.imageY)];
}


@end

六、刷帧动画图示

iOS学习笔记-057.自定义View04——刷帧动画_第2张图片

你可能感兴趣的:(iOS学习-iOS,ios,自定义View,刷帧动画,动画)