iOS 使用一张图片做不同尺寸的占位图

前言

以前项目中使用站位图,每一个不同尺寸的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;
    
}
下面上一张图解释一下方法中的内容
iOS 使用一张图片做不同尺寸的占位图_第1张图片
占位图.jpg

注意

一个项目使用一张占位图虽然会少量的减少App的体积,但是对性能也会造成一定影响。这就需要根据自己的需求来选择了。

以上观点如果有错误的地方, 希望能及时联系我,我会立即更改,谢谢。

你可能感兴趣的:(iOS 使用一张图片做不同尺寸的占位图)