日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

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í)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 岛国视频在线观看 | 国产成年人免费视频 | 国产乱码精品一区二区三区五月婷 | 日韩不卡在线视频 | 午夜精品久久久久久久久久久久久 | 精品国产区 | 天堂网在线观看 | 国产视频网 | 日韩精品亚洲一区 | 美日韩一区二区三区 | 日韩在线播放视频 | 亚洲一区二区综合 | 在线视频日韩 | 久热国产精品 | 韩日一级片 | 三级毛片黄色 | 天天看毛片| 一区二区三区香蕉视频 | 日本免费大全免费网站视频 | 三级在线观看 | 久久色av | 色偷偷青青草 | 亚洲www.| 国产精品美女 | 日韩精品一二三 | 国产精彩视频在线 | 福利视频一二三在线视频免费观看 | 国产成人精品在线观看 | 五月天丁香综合久久国产 | 国产免费久久 | 亚洲综合99 | 亚洲午码 | a级毛片免费高清视频 | 一区二区三区91 | 亚洲国产精品自拍 | 成人精品国产免费网站 | www.com国产 | 国产精品久久久久久久久久久久 | 国产在线一区二区三区 | 欧美日韩国产在线看 | 免费看黄色网 |