1、图片加载
imageNamed
UIImage *image = [UIImage imageNamed:@"imageName"];
在application bundle的顶层文件夹寻找相应名字的图象,找到后系统会把图像Cache到内存(对于同一个图像系统只会把它Cache到内存一次)。,如果再次要用同一图像,图像将从内部缓存而不是从资源中加载。
imageNamed的优点是当加载时会缓存图片。所以当图片会频繁的使用时,那么用imageNamed的方法会比较好。
但如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存。
imageWithContentsOfFile
NSString *path = [[NSBundle mainBundle]pathForResource:@"imageName" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:path];
仅加载图片,图像数据不会缓存。因此对于较大的图片以及使用情况较少时,那就可以用该方法,降低内存消耗。
imageWithData
NSData *imageData = [NSData dataWithContentsOfFile:path];
UIImage *image = [UIImage imageWithData:imageData];
不为图像提供缓存,从二进制数据创建,利用NSData方式加载时,图像会被系统以数据方式加载到程序。当你不需要重用该图像,或者你需要将图像以数据方式存储到数据库,又或者你要通过网络下载一个很大的图像时,请尽量使用imageWithData的方式加载图像。
2、图片拉伸
//方式一
[image resizableImageWithCapInsets:UIEdgeInsetsMake(imageHeight*0.5, imageWidth*0.5, imageHeight*0.5-1, imageWidth*0.5-1) resizingMode:UIImageResizingModeTile]
/*
UIImageResizingModeTile, //平铺
UIImageResizingModeStretch,//拉伸
*/
//方式二
[image stretchableImageWithLeftCapWidth:imageWidth*0.5 topCapHeight:imageHeight*0.5];