自动适配多种尺寸占位图(带缓存)

#import "UIImage+Placeholder.h"

#import "MyCommon.h"

#define SCLoading @"SCLoading"

static NSMutableDictionary *mutableImageDic;

@implementation UIImage (Placeholder)

+ (UIImage *)loadingImage:(CGSize)size{

//初始化

if (!mutableImageDic) {

mutableImageDic = [NSMutableDictionary new];

[mutableImageDic setObject:[UIImage imageNamed:SCLoading] forKey:SCLoading];

}

if (CGSizeEqualToSize(size, CGSizeZero)) {//如果是自动布局没有size,则三倍面积

UIImage *img = (UIImage *)[mutableImageDic objectForKey:SCLoading];

size = CGSizeMake(img.size.width * 3, img.size.height * 3);

}

//如果缓存里面,马上返回

NSString *imageSizeKey = NSStringFromCGSize(size);

UIImage *cacheImage = [mutableImageDic objectForKey:imageSizeKey];

if (cacheImage) {

return cacheImage;

}

//没有就绘制

UIImage *img = [mutableImageDic objectForKey:SCLoading];

UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, UIColorFromRGB(0xDBDBDB).CGColor);

CGContextFillRect(context, CGRectMake(0, 0, size.width, size.height));

if (size.width < img.size.width || size.height < img.size.height) {

[img drawInRect:CGRectMake(0, 0, size.width, size.height)];

}else{

[img drawInRect:CGRectMake((size.width - img.size.width)/2, (size.height - img.size.height)/2, img.size.width, img.size.height)];

}

UIImage* retImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

//绘制后添加到到字典内

[mutableImageDic setObject:retImage forKey:imageSizeKey];

return retImage;

}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa阅读 1,142评论 1 6
  • 1、禁止手机睡眠 [UIApplication sharedApplication].idleTimerDisab...
    FF_911阅读 1,426评论 0 3
  • 1、改变 UITextField 占位文字 颜色和去掉底部白框 [_userName setValue:[UICo...
    i_MT阅读 1,054评论 0 2
  • UIGraphicsBeginImageContext 创建一个基于位图的上下文(context),并将其设置为当...
    李前途阅读 3,257评论 1 4
  • 一场雨,涤荡了所有燥热。大地似乎温柔了些,蝉的叫声也少了些歇斯底里,清风徐来,让人感到丝丝惬意。 雨后的街道干...
    爱度花艺阅读 328评论 12 23