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 文件
#import 

@interface DSImageForExtention : UIImage

@end
.m 文件
#import "DSImageForExtention.h"

@implementation DSImageForExtention

+ (UIImage *)imageNamed:(NSString *)name
{
    NSString *imgName = nil;
    if ([super imageNamed:name]) {
        return [super imageNamed:name];
    }
    else
    {
        imgName = name;
        if ([imgName hasSuffix:@"jpg"]) {
            imgName = [imgName stringByReplacingOccurrencesOfString:@"jpg" withString:@"png"];
            if (![super imageNamed:imgName]) {
                imgName = [imgName stringByReplacingOccurrencesOfString:@".png" withString:@"[email protected]"];
            }
        }
        else if ([imgName hasSuffix:@"png"]) {
            imgName = [imgName stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
            if (![super imageNamed:imgName]) {
                imgName = [imgName stringByReplacingOccurrencesOfString:@".jpg" withString:@"[email protected]"];
            }
        }
    }
    return [super imageNamed:imgName];
}

@end
注:因为这个代码是根据自己的项目定制的,使用的时候请根据实际情况修改

使用方法
[[UIImageView alloc] initWithImage:[DSImageForExtention imageNamed:@"[email protected]"]];



你可能感兴趣的:(IOS开发)