登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

iOS网络图片尺寸适配 - XHWebImageAutoSize

[复制链接]
来自: CoderZhuXH 分类: iOS精品源码 上传时间: 2016-12-14 00:09:29

项目介绍:

XHWebImageAutoSize

-网络图片尺寸适配解决方案

1.iOS开发中,常碰到网络图片需要做尺寸适配(使显示出来的图片不变形)
2.最好的解决方案是:后台把图片的分辨率拼接在图片的URL地址中,我们截取获得分辨率,从而根据宽高比,来适配imageView尺寸.
3.但当后台所给图片URL地址中没有分辨率,他又不肯加时,只好我们自己来解决了.
4.XHWebImageAutoSize就是解决3中的这种情况.
5.代码地址:https://github.com/CoderZhuXH/XHWebImageAutoSize

XHWebImageAutoSize

网络图片尺寸/高度自适应

==============

前言:

  • 1.iOS开发中,常碰到网络图片需要做尺寸适配(使显示出来的图片不变形)

  • 2.最好的解决方案是:后台把图片的分辨率拼接在图片的URL地址中,我们截取获得分辨率,从而根据宽高比,来适配imageView尺寸.

  • 3.但当后台所给图片URL地址中没有分辨率,他又不肯加时,只好我们自己来解决了.

  • 4.XHWebImageAutoSize就是解决3中的这种情况.

特性:

  • 1.异步缓存网络图片尺寸,优先从缓存中获取图片尺寸.

  • 2.UITableView,UICollectionView UI动态更新.

技术交流群(群号:537476189).

更新记录:

  • 2016.11.21 -- v1.0

效果


使用方法

1.此处以在UITableView中使用,UITableViewCell上仅有一个UIImageView为例(其他示例详见DEMO)

   
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *url = self.dataArray[indexPath.row];
    /**
     *  参数1:图片URL
     *  参数2:imageView 宽度
     *  参数3:预估高度(此高度仅在图片尚未加载出来前起作用,不影响真实高度)
     */
    return [XHWebImageAutoSize imageHeightForURL:[NSURL URLWithString:url] layoutWidth:[UIScreen mainScreen].bounds.size.width-16 estimateHeight:200];
}   

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    DemoVC1Cell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    if(!cell)
    {
        cell = [[DemoVC1Cell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];
    }
    NSString *url = self.dataArray[indexPath.row];
    //加载网络图片使用SDWebImage
    [cell.imgView sd_setImageWithURL:[NSURL URLWithString:url] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        
        /**
         *  缓存image size
         */
        [XHWebImageAutoSize storeImageSize:image forURL:imageURL completed:^(BOOL result) {
            
           /**
            *  尺寸缓存成功,reload cell
            */
            if(result)  [tableView  xh_reloadRowAtIndexPath:indexPath forURL:imageURL];
            
        }];
        
    }];
    return cell;
}

API

  • 1.获取图片高度/尺寸及缓存相关

/**
 *   Get image height
 *
 *  @param url            imageURL
 *  @param layoutWidth    layoutWidth
 *  @param estimateHeight estimateHeight(default 100)
 *
 *  @return imageHeight
 */
+(CGFloat)imageHeightForURL:(NSURL *)url layoutWidth:(CGFloat)layoutWidth estimateHeight:(CGFloat )estimateHeight;

/**
 *  Get image size from cache,query the disk cache synchronously after checking the memory cache
 *
 *  @param url imageURL
 *
 *  @return imageSize
 */
+(CGSize )imageSizeFromCacheForURL:(NSURL *)url;

/**
 *  Store an imageSize into memory and disk cache
 *
 *  @param image          image
 *  @param url            imageURL
 *  @param completedBlock An block that should be executed after the imageSize has been saved (optional)
 */
+(void)storeImageSize:(UIImage *)image forURL:(NSURL *)url completed:(XHWebImageAutoSizeCacheCompletionBlock)completedBlock;

/**
 *  Get reload state from cache,query the disk cache synchronously after checking the memory cache
 *
 *  @param url imageURL
 *
 *  @return reloadState
 */
+(BOOL)reloadStateFromCacheForURL:(NSURL *)url;

/**
 *  Store an reloadState into memory and disk cache
 *
 *  @param state          reloadState
 *  @param url            imageURL
 *  @param completedBlock An block that should be executed after the reloadState has been saved (optional)
 */
+(void)storeReloadState:(BOOL)state forURL:(NSURL *)url completed:(XHWebImageAutoSizeCacheCompletionBlock)completedBlock;
  • 2.tableView reload相关


/**
 *  Reload row
 *
 *  @param indexPath indexPath
 *  @param url        imageURL
 */
-(void)xh_reloadRowAtIndexPath:(NSIndexPath *)indexPath forURL:(NSURL *)url;

/**
 *  Reload row withRowAnimation
 *
 *  @param indexPath indexPath
 *  @param animation UITableViewRowAnimation
 *  @param url       imageURL
 */
-(void)xh_reloadRowAtIndexPath:(NSIndexPath *)indexPath withRowAnimation:(UITableViewRowAnimation)animation forURL:(NSURL *)url;
  • 3.collectionView reload相关

/**
 *  Reload item
 *
 *  @param indexPath indexPath
 *  @param url        imageURL
 */
-(void)xh_reloadItemAtIndexPath:(NSIndexPath *)indexPath forURL:(NSURL *)url;

安装

1.手动添加:

  • 1.将 XHWebImageAutoSize 文件夹添加到工程目录中

  • 2.导入 XHWebImageAutoSize.h

2.CocoaPods:

  • 1.在 Podfile 中添加 pod 'XHWebImageAutoSize'

  • 2.执行 pod install 或 pod update

  • 3.导入 XHWebImageAutoSize.h

Tips

  • 1.如果发现pod search XHWebImageAutoSize 搜索出来的不是最新版本,需要在终端执行cd ~/desktop退回到desktop,然后执行pod setup命令更新本地spec缓存(需要几分钟),然后再搜索就可以了

  • 2.如果你发现你执行pod install后,导入的不是最新版本,请删除Podfile.lock文件,在执行一次 pod install

  • 3.如果在使用过程中遇到BUG,希望你能Issues我,谢谢(或者尝试下载最新的代码看看BUG修复没有)

系统要求

  • 该项目最低支持 iOS 7.0 和 Xcode 7.0

许可证

XHWebImageAutoSize 使用 MIT 许可证,详情见 LICENSE 文件

code4app

相关源码推荐:

我来说两句
*滑动验证:
所有评论(39)
hellokenken 2016-12-15 15:18:13
支持,感谢,祝code4app越来越好~
回复
AlonMessi 2016-12-15 15:18:43
支持,感谢,祝code4app越来越好~
回复
kengsir 2016-12-15 15:19:29
感谢大神分享,必须顶!
回复
littleRed 2016-12-15 15:19:54
虽不明,但觉厉...
回复
phoiu 2016-12-15 15:20:35
code4app好的代码demo真的很多,谢谢啦~
回复
BlueManlove 2016-12-15 15:21:46
学习...学习...
回复
code4app热心网友 2016-12-15 17:43:43
很给力,Code4App有你更精彩!
回复
李世铿 2016-12-15 17:44:55
楼主用心了,内容非常精彩。
回复
cy421776253 2016-12-15 17:45:47
正需要啊,感谢楼主无私分享!
回复
1234下一页
提取码:  下载次数:47 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
1772 0 47
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表