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;
    
}
下面上一张图解释一下方法中的内容
占位图.jpg

注意

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

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

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

推荐阅读更多精彩内容

  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,680评论 7 249
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,284评论 8 183
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,206评论 4 61
  • 给大家报告一个喜讯: 2016年全球自然科学技术指数,中国居然完爆西方(注意: 此可不是仅仅完爆美国,而是...
    我是龍圖阅读 1,079评论 0 1
  • 最近校园虐童事件闹的沸沸扬扬,其实冰冻三尺非一日之寒,这不是新现象,我们小时候上学就经常受罚站,耳光,掃把,扣留不...
    西岳散人阅读 1,904评论 0 0