objective-c 逐帧动画

//

//  ViewController.m

//  逐帧动画

//

//  Created by DC017 on 15/12/22.

//  Copyright © 2015 DC017. All rights reserved.

//


#import "ViewController.h"


@interface ViewController ()

{

    NSMutableArray * muarray;

    UIImageView * imageView;

    UIImage * image;

    UIImage * imageII;

    CALayer * layer;

    int current;

}

@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    [self diYiZhong];

    [self diErZhong];

    

}

-(void)diYiZhong{

    muarray=[[NSMutableArray alloc]initWithCapacity:10];

    imageView=[[UIImageView alloc]initWithFrame:CGRectMake(40, 200, 298, 215)];

    [self.view addSubview:imageView];

    for(int i=1;i<=87 ;i++){

        image=[UIImage imageNamed:[NSString stringWithFormat:@"dazhao_%d",i]];

        [muarray addObject:image];

    }

 

    imageView.animationImages=muarray;//动画数组

    imageView.animationDuration=0.02* [muarray count];//一秒显示10

    imageView.animationRepeatCount=HUGE_VALF;//重复无线次

    [imageView startAnimating];

    

}

-(void)diErZhong{

    //创建图层

    layer=[[CALayer alloc]init];

    layer.frame=CGRectMake(40, 400, 298, 215);

    

    [self.view.layer addSublayer:layer];

    

    //定义时钟对象

    CADisplayLink * displayLink=[CADisplayLink displayLinkWithTarget:self selector:@selector(step)];

    //添加时钟对象到主运行循环

    [displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

}

-(void)step{

    

    static int s=0;

    s++;

    if (s%1==0) {

        imageII=muarray[current];

        layer.contents=(id)imageII.CGImage;//更新图片

        current=(current+1)%87;

        

    }

    

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end


你可能感兴趣的:(objective-c 逐帧动画)