前言
以前项目中使用站位图,每一个不同尺寸的UIImageView
或者 UIButton
都需要美工切两张占位图(@2x和@3x),会增加App的体积。本文主要讲是如何使用一张图片,适应不同尺寸的容器。
只有一个方法就不绕圈子了
/**
传入需要的占位图尺寸 获取占位图
@param size 需要的站位图尺寸
@return 占位图
*/
+ (UIImage *)placeholderImageWithSize:(CGSize)size {
// 占位图的背景色
UIColor *backgroundColor = [UIColor whiteColor];
// 中间LOGO图片
UIImage *image = [UIImage imageNamed:@"placeholdimage"];
// 根据占位图需要的尺寸 计算 中间LOGO的宽高
CGFloat logoWH = (size.width > size.height ? size.height : size.width) * 0.5;
CGSize logoSize = CGSizeMake(logoWH, logoWH);
// 打开上下文
UIGraphicsBeginImageContextWithOptions(size,0, [UIScreen mainScreen].scale);
// 绘图
[backgroundColor set];
UIRectFill(CGRectMake(0,0, size.width, size.height));
CGFloat imageX = (size.width / 2) - (logoSize.width / 2);
CGFloat imageY = (size.height / 2) - (logoSize.height / 2);
[image drawInRect:CGRectMake(imageX, imageY, logoSize.width, logoSize.height)];
UIImage *resImage =UIGraphicsGetImageFromCurrentImageContext();
// 关闭上下文
UIGraphicsEndImageContext();
return resImage;
}
下面上一张图解释一下方法中的内容
注意
一个项目使用一张占位图虽然会少量的减少App的体积,但是对性能也会造成一定影响。这就需要根据自己的需求来选择了。
以上观点如果有错误的地方, 希望能及时联系我,我会立即更改,谢谢。