多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > iOS加載動態(tài)圖的兩種方法

iOS加載動態(tài)圖的兩種方法

來源:程序員人生   發(fā)布時間:2015-05-19 07:56:59 閱讀次數(shù):4546次

1

 view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];

    NSString *imagePath =[[NSBundle mainBundle] pathForResource:@"csjg" ofType:@"gif"];

    CGImageSourceRef  cImageSource = CGImageSourceCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:imagePath], NULL);

    size_t imageCount = CGImageSourceGetCount(cImageSource);

    NSMutableArray *images = [[NSMutableArray alloc] initWithCapacity:imageCount];

    NSMutableArray *times = [[NSMutableArray alloc] initWithCapacity:imageCount];

    NSMutableArray *keyTimes = [[NSMutableArray alloc] initWithCapacity:imageCount];

    float totalTime = 0;

    for (size_t i = 0; i < imageCount; i++) {

        CGImageRef cgimage= CGImageSourceCreateImageAtIndex(cImageSource, i, NULL);

        [images addObject:(__bridge id)cgimage];

        CGImageRelease(cgimage);

        

        NSDictionary *properties = (__bridge NSDictionary *)CGImageSourceCopyPropertiesAtIndex(cImageSource, i, NULL);

        NSDictionary *gifProperties = [properties valueForKey:(__bridge NSString *)kCGImagePropertyGIFDictionary];

        NSString *gifDelayTime = [gifProperties valueForKey:(__bridge NSString* )kCGImagePropertyGIFDelayTime];

        [times addObject:gifDelayTime];

        totalTime += [gifDelayTime floatValue];

//        _size.width = [[properties valueForKey:(NSString*)kCGImagePropertyPixelWidth] floatValue];

//        _size.height = [[properties valueForKey:(NSString*)kCGImagePropertyPixelHeight] floatValue];

    }

    

    float currentTime = 0;

    for (size_t i = 0; i < times.count; i++) {

        float keyTime = currentTime / totalTime;

        [keyTimes addObject:[NSNumber numberWithFloat:keyTime]];

        currentTime += [[times objectAtIndex:i] floatValue];

    }

    

    CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];

    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];

    [animation setValues:images];

    [animation setKeyTimes:keyTimes];

    animation.duration = totalTime;

    animation.repeatCount = HUGE_VALF;

    [view.layer addAnimation:animation forKey:@"gifAnimation"];



2

//

//  GifView.h

//  GIFViewer

//

//  Created by xToucher04 on 11⑴1⑼.

//  Copyright 2011 Toucher. All rights reserved.

//


#import <UIKit/UIKit.h>

#import <ImageIO/ImageIO.h>


@interface GifView : UIView {

CGImageSourceRef gif;

NSDictionary *gifProperties;

size_t index;

size_t count;

NSTimer *timer;

}


- (id)initWithFrame:(CGRect)frame filePath:(NSString *)_filePath;

- (id)initWithFrame:(CGRect)frame data:(NSData *)_data;


@end



//

//  GifView.m

//  GIFViewer

//

//  Created by xToucher04 on 11⑴1⑼.

//  Copyright 2011 Toucher. All rights reserved.

//


#import "GifView.h"

#import <QuartzCore/QuartzCore.h>


@implementation GifView



- (id)initWithFrame:(CGRect)frame filePath:(NSString *)_filePath{

    

    self = [super initWithFrame:frame];

    if (self) {

        

gifProperties = [[NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount]

forKey:(NSString *)kCGImagePropertyGIFDictionary] retain];

gif = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:_filePath], (CFDictionaryRef)gifProperties);

count =CGImageSourceGetCount(gif);

timer = [NSTimer scheduledTimerWithTimeInterval:0.12 target:self selector:@selector(play) userInfo:nil repeats:YES];

[timer fire];

    }

    return self;

}


- (id)initWithFrame:(CGRect)frame data:(NSData *)_data{

    

    self = [super initWithFrame:frame];

    if (self) {

        

gifProperties = [[NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount]

forKey:(NSString *)kCGImagePropertyGIFDictionary] retain];

        // gif = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:_filePath], (CFDictionaryRef)gifProperties);

        gif = CGImageSourceCreateWithData((CFDataRef)_data, (CFDictionaryRef)gifProperties);

count =CGImageSourceGetCount(gif);

timer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(play) userInfo:nil repeats:YES];

[timer fire];

    }

    return self;

}


-(void)play

{

index ++;

index = index%count;

CGImageRef ref = CGImageSourceCreateImageAtIndex(gif, index, (CFDictionaryRef)gifProperties);

self.layer.contents = (id)ref;

    CFRelease(ref);

}

-(void)removeFromSuperview

{

NSLog(@"removeFromSuperview");

[timer invalidate];

timer = nil;

[super removeFromSuperview];

}

- (void)dealloc {

    NSLog(@"dealloc");

CFRelease(gif);

[gifProperties release];

    [super dealloc];

}

@end

使用的時候:

 GifView *pathView =[[GifView alloc] initWithFrame:CGRectMake(100, 0, 100, 100) filePath:[[NSBundle mainBundle] pathForResource:@"csjg" ofType:@"gif"]];



生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久精品国产精品亚洲毛片 | 日韩啊v | 伊人网在线视频观看 | 欧美日韩一区二区三区免费 | 亚洲全黄 | 欧美最猛同性video | 亚洲午夜久久久久中文字幕 | 精品女人| 91人人区免费区人人 | jizzjizz免费| 亚洲国产高清在线精品一区 | 亚洲大成色www永久网址 | 三级c欧美做人爱视频 | 一二三四观看在线视频中文 | 国产精品成人扳一级aa毛片 | 日本欧美一区二区免费视 | 97成人在线观看 | 精品日韩欧美一区二区三区在线播放 | xxxxxx性受| 亚洲成a人片777777网站 | 欧美日韩视频二区三区 | 国产aⅴ精品一区二区三区久久 | 国产xxxxx片免费观看 | 一区二区三区精品国产欧美 | 老司机性视频 | 久久精品国产一区二区 | 日本护士做xxxxxx视频 | 校园激情春色 | 亚洲成a人片在线观看中文!!! | 欧美一级级毛片 | aⅴ一区二区三区无卡无码 aⅴ在线免费观看 | 99久久综合狠狠综合久久aⅴ | 三级全黄在线观看www桃花 | 久久免费精品国产72精品剧情 | 欧美区亚洲区 | 国产福利不卡一区二区三区 | 久久精品国产第一区二区 | 国产精品成人免费综合 | 稀缺资源呦视频在线网站 | 亚洲a在线播放 | 亚洲国产激情一区二区三区 |