iOS 加载gif动画
2016-02-22 15:38
351 查看
iOS 加载gif动画相关代码如下
- (void)viewDidLoad { [super viewDidLoad]; // 先引用ImageIO 获取gifSource #import <ImageIO/ImageIO.h> NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"jiafei" withExtension:@"gif"]; CGImageSourceRef gifSource = CGImageSourceCreateWithURL((CFURLRef)fileUrl, NULL); size_t imageCount = CGImageSourceGetCount(gifSource); 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(gifSource, i, NULL); [images addObject:(__bridge id)cgimage]; CGImageRelease(cgimage); NSDictionary *properties = (__bridge NSDictionary *)CGImageSourceCopyPropertiesAtIndex(gifSource, 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; [self.view.layer addAnimation:animation forKey:@"gifAnimation"]; }
相关文章推荐
- iOS七大手势之(平移、捏合、轻扫、屏幕边缘轻扫)手势识别器方法
- iOS MD5加密
- iOS之动画总结
- iOS UTI(统一类型标识)
- iOS 自动化测试
- IOS字体模糊
- iOS开发中遇见的错误
- iOS开发---生成二维码
- ios开发动画效果的基本学习介绍
- ios 开发者 帐号怎么申请
- iOS 在 ARC 环境下 dealloc 的使用、理解误区
- iOS中登录的遮盖SVProgressHUD
- 支付宝sdk的使用及常见问题
- iOS 从真机中拿取文件
- iOS开发之 线程安全机制
- iOS加速度传感器
- IOS Xib使用——Xib表示局部界面
- iOS开发 webView加载html数据
- iOS- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发---给金钱添加分隔符