资源过多,容易导致APP的包太大,会加重上传和下载的负担,所以有的时候需要做一些优化
- 不透明的大图片压缩成JPG格式
- 大的背景图片如果一定要是png的,可以用photoshop 把它保存为web格式的图片,压完之后注意看一下,有没有太大的失真。
- 删除不必要的字体,如果一定要,可以考虑使用 ios api (未验证)http://blog.csdn.net/bingowxd/article/details/16848595
- 把product 里面的文件 使用“显示包内容”方式,按照文件大小排序,查看打完包后具体是哪些图片占用太多的空间,并针对性地优化
tips:
- photoshow 有动作录制回放功能,可以把相同的操作用快捷键完成,不会使用请百度谷歌
- png压缩成jpg,代码里面需要做一些特殊的更改。考虑到一般使用 [UIImage imagewithname:@"name.png"], 新建一个类,继承自UIImage,重写image named:方法,把name方法改成能够识别 jpg、JPG、png、PNG以及@2x,代码附在后面
- Xcode编译如果遇到重复的文件,报错,但不影响编译通过,解决办法就是把重复的文件删除就行了
- 我使用的软件 Dedupo:去掉重复的文件 EazyBatchPhoto: 图片格式转换,可 png 和 jpg 互转 photoshop:当EazyBatchPhoto压缩不理想,使用保存为web格式。
.h 文件
#import <UIKit/UIKit.h>
@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:@".@2x.png"];
}
}
else if ([imgName hasSuffix:@"png"]) {
imgName = [imgName stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
if (![super imageNamed:imgName]) {
imgName = [imgName stringByReplacingOccurrencesOfString:@".jpg" withString:@".@2x.jpg"];
}
}
}
return [super imageNamed:imgName];
}
@end
注:因为这个代码是根据自己的项目定制的,使用的时候请根据实际情况修改
使用方法
[[UIImageView alloc] initWithImage:[DSImageForExtention imageNamed:@"hello@2x.png"]];