0f0a1d08e3a1b1e156dfc95ff62e32070.jpg
上面的圖片是一個分辨率很高的圖片圖片本身只有1M左右但是分辨率很大。5472*3648浪耘,如果連續(xù)九張加載到UIImageView的時候?qū)е聝?nèi)存暴增甚至會導致app因為memory的問題閃退软啼。
如果直接使用SDwebImage加載的話冗锁,你會發(fā)現(xiàn)導致內(nèi)存暴增
我的解決方法是:
//子線程加載圖片
dispatch_async(dispatch_queue_create(0, 0), ^{
UIImage *ima = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[_picUrlArr objectAtIndex:i]]]]; //存放圖片url圖集_picUrlArr
UIImage *newImage;
if (ima.size.width > 1024) { //分辨率大的則重繪日杈,否則不重繪
//獲取原圖片寬高比
CGFloat sourceImageAspectRatio = ima.size.width/ima.size.height;
CGSize newSize = CGSizeMake(1024, 1024/sourceImageAspectRatio);
//重繪圖片
UIGraphicsBeginImageContext(newSize);
[ima drawInRect:CGRectMake(0, 0, newSize.width,newSize.height)];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
} else {
newImage = ima;
}
//主線程更新UI
dispatch_async(dispatch_get_main_queue(), ^{
displayImgview.image = newImage;
});
});
記錄庞萍,用于學習拧烦,如有錯誤請賜教。謝謝