1、图片解压显示:
开一条后台线程1:
先获得UIImage, 然后来一个图片上下文画布,用UIGrapicsXX c的接口,将UIImage绘制到上下文UIGraphicsBeginImageContext
UIGraphicsBeginImageContextWithOptions
image drawAtPoint:CGPointZero
然后又从context上取出UIImage:UIGraphicsGetImageFromCurrentImageContext
图片解压完毕。
回到主线程:
设置imageview的image属性。
完成。
2、使用CATiledLayer
- (void)drawLayer:(CATiledLayer *)layer inContext:(CGContextRef)ctx
在drawLayer方法中,把uiimage 绘画到layer bounds中的区域。
3、分辨率交换
其实还是用到1的方法, 当view在滚动时, 使用低分辨率的图片,如果没有低分辨率的图片, 就将大的图片绘制到较小的CGContext,然后存储起来,重复使用此低分辨率图片。
4、图片缓存
UIImage imageNamed方法底层苹果是有缓存机制的, 但是具体缓存规则不详。 可以考虑用NSCache。揉合1,2,3方案一起使用。
- 从NSCache取image
- 开一条后台线程, 从文件读出来uiimage, 重新绘制,得到解压版的uiimage
- 回到主线程, 对UIImageView的image属性进行设置。
- 并且将解压版的图片存储到NSCache中。
5、选择png还是jpeg
6、图片合成