【IOS】APP瘦身,减小包大小的方法

原文地址:http://blog.csdn.net/mangosnow/article/details/25687193

APP打包时候,由于资源过多,容易导致APP的包太大,会加重上传和下载的负担,所以有的时候需要做一些优化

  1. 不透明的大图片压缩成JPG格式
  2. 大的背景图片如果一定要是png的,可以用photoshop 把它保存为web格式的图片,压完之后注意看一下,有没有太大的失真。
  3. 删除不必要的字体,如果一定要,可以考虑使用 ios api (未验证)http://blog.csdn.net/bingowxd/article/details/16848595
  4. 把product 里面的文件 使用“显示包内容”方式,按照文件大小排序,查看打完包后具体是哪些图片占用太多的空间,并针对性地优化


tips:

  1. photoshow 有动作录制回放功能,可以把相同的操作用快捷键完成,不会使用请百度谷歌
  2. png压缩成jpg,代码里面需要做一些特殊的更改。考虑到一般使用 [UIImage imagewithname:@"name.png"], 新建一个类,继承自UIImage,重写image named:方法,把name方法改成能够识别 jpg、JPG、png、PNG以及@2x,代码附在后面
  3. Xcode编译如果遇到重复的文件,报错,但不影响编译通过,解决办法就是把重复的文件删除就行了
  4. 我使用的软件 Dedupo:去掉重复的文件 EazyBatchPhoto: 图片格式转换,可 png 和 jpg 互转 photoshop:当EazyBatchPhoto压缩不理想,使用保存为web格式。

.h 文件
[objc]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface DSImageForExtention : UIImage  
  4.   
  5. @end  
.m 文件
[objc]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. #import "DSImageForExtention.h"  
  2.   
  3. @implementation DSImageForExtention  
  4.   
  5. + (UIImage *)imageNamed:(NSString *)name  
  6. {  
  7.     NSString *imgName = nil;  
  8.     if ([super imageNamed:name]) {  
  9.         return [super imageNamed:name];  
  10.     }  
  11.     else  
  12.     {  
  13.         imgName = name;  
  14.         if ([imgName hasSuffix:@"jpg"]) {  
  15.             imgName = [imgName stringByReplacingOccurrencesOfString:@"jpg" withString:@"png"];  
  16.             if (![super imageNamed:imgName]) {  
  17.                 imgName = [imgName stringByReplacingOccurrencesOfString:@".png" withString:@".@2x.png"];  
  18.             }  
  19.         }  
  20.         else if ([imgName hasSuffix:@"png"]) {  
  21.             imgName = [imgName stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];  
  22.             if (![super imageNamed:imgName]) {  
  23.                 imgName = [imgName stringByReplacingOccurrencesOfString:@".jpg" withString:@".@2x.jpg"];  
  24.             }  
  25.         }  
  26.     }  
  27.     return [super imageNamed:imgName];  
  28. }  
  29.   
  30. @end  
注:因为这个代码是根据自己的项目定制的,使用的时候请根据实际情况修改

使用方法
[objc]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. [[UIImageView alloc] initWithImage:[DSImageForExtention imageNamed:@"hello@2x.png"]];  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值