黑马程序员技术交流社区
标题:
高仿Tom猫--(性能最优版)
[打印本页]
作者:
叶子哥
时间:
2016-6-13 00:15
标题:
高仿Tom猫--(性能最优版)
关于Tom猫的小项目,网上一搜一大堆.大部分都是最基础的实现
,没有进行性能上的优化,比如说懒加载,图片的缓存问题,以及对图片的重采集问题.
如果没有考虑到以上问题,那么这个项目就是不太完整的APP,一旦运行起来,会瞬间把内存提高
200M
及以上.
本人经过一番斟酌完善后,才敢露面把这个小项目拿出来献丑了...
先看疗效:
Tom猫.gif
(889.71 KB, 下载次数: 28)
下载附件
2016-6-13 00:10 上传
部分主要代码如下:
//播放动画效果的方法
- (void)playAnimationWithCount:(int)count andPrefixName:(NSString *)name{
if(self.imgView.isAnimating){
return;
}
NSMutableArray *imgArray = [NSMutableArray array];
for (int i = 0; i < count; i++) {
NSString *imgName = [NSString stringWithFormat:@"%@_%02d.jpg",name,i];
NSString *imgPath = [[NSBundle mainBundle] pathForResource:imgName ofType:nil];
UIImage *image = [UIImage imageWithContentsOfFile:imgPath];
UIImage *newImage = [self getImage:image andSize:[UIScreen mainScreen].bounds.size];
[imgArray addObject:newImage];
}
self.imgView.animationImages = imgArray;
self.imgView.animationDuration = count * 0.1;
self.imgView.animationRepeatCount = 1;
[self.imgView startAnimating];
//必须把创建的数组,在播放动画完成后,置为nil,进行释放.
[self.imgView performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:count * 0.1];
}
//在子线程中完成对图片的重采集
- (UIImage *)getImage:(UIImage *)image andSize:(CGSize)size{
UIGraphicsBeginImageContext(size);
CGRect imageRect = CGRectMake(0, 0, size.width, size.height);
[image drawInRect:imageRect];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
复制代码
如果需要本项目的Demo 的童鞋,请留言,到时 找个时间上传,共享给大家,一起交流.....
作者:
小海盗。
时间:
2016-6-13 00:26
支持一下.
作者:
浮云我想听你说
时间:
2016-6-13 18:29
好厉害啊
作者:
vivi342863
时间:
2016-6-13 21:59
哇塞 好厉害的样子...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2