关于Tom猫的小项目,网上一搜一大堆.大部分都是最基础的实现,没有进行性能上的优化,比如说懒加载,图片的缓存问题,以及对图片的重采集问题. 如果没有考虑到以上问题,那么这个项目就是不太完整的APP,一旦运行起来,会瞬间把内存提高200M及以上.
本人经过一番斟酌完善后,才敢露面把这个小项目拿出来献丑了...
先看疗效:
部分主要代码如下:
- //播放动画效果的方法
- - (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 的童鞋,请留言,到时 找个时间上传,共享给大家,一起交流.....
|
|