• Stars
    star
    275
  • Rank 149,796 (Top 3 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created about 8 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

网络图片尺寸、高度自适应/适配 - 支持异步缓存imageSize , 支持动态刷新界面

XHWebImageAutoSize

网络图片尺寸/高度自适应解决方案

AppVeyor Version Status Support Pod Platform Pod License

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

前言:

  • 1.iOS开发中,常碰到网络图片需要做尺寸适配(使显示出来的图片不变形)
  • 2.最好的解决方案是:后台把图片的分辨率拼接在图片的URL地址中,我们截取获得分辨率,从而根据宽高比,来适配imageView尺寸.
  • 3.但往往有些时候由于各种原因,图片分辨率后台那边加不上去,没办法只好我们自己来解决了.
  • 4.XHWebImageAutoSize就是解决3中的这种情况.

特性:

  • 1.异步缓存网络图片尺寸,优先从缓存中获取图片尺寸.
  • 2.UITableView,UICollectionView UI动态更新.

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

效果

使用方法

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  */
            if(result)  [tableView  xh_reloadDataForURL: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 width
 *
 *  @param url            imageURL
 *  @param layoutHeight   layoutHeight
 *  @param estimateWidth estimateWidth(default 90)
 *
 *  @return imageHeight
 */
+(CGFloat)imageWidthForURL:(NSURL *)url layoutHeight:(CGFloat)layoutHeight estimateWidth:(CGFloat )estimateWidth;

/**
 *  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;
  • 2.tableView reload
/**
 Reload tableView

 @param url imageURL
 */
-(void)xh_reloadDataForURL:(NSURL *)url;
  • 3.collectionView reload
/**
 Reload collectionView
 
 @param url imageURL
 */
-(void)xh_reloadDataForURL:(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 文件

More Repositories

1

XHLaunchAd

🔥The screen opening advertising solutions - 开屏广告、启动广告解决方案-支持静态/动态图片广告,mp4视频广告,全屏/半屏广告、兼容iPhone/iPad. 【 Github下载不了/下载慢 可以访问国内下载地址: https://gitee.com/CoderZhuXH/XHLaunchAd】
Objective-C
3,685
star
2

XHPayKit

🔥不用官方SDK实现微信支付、支付宝支付
Objective-C
564
star
3

XHNetworkCache

一行代码将网络数据持久化 - 支持数据同步/异步写入及更新、缓存数据读取、获取缓存数据大小、缓存数据清除.
Objective-C
182
star
4

XHVersion

一行代码检测App更新,无需添加AppId等任何信息
Objective-C
163
star
5

XHToast

简洁轻便提示工具,一行代码既可完成提示信息显示 - 支持自定义显示位置及停留时间
Objective-C
153
star
6

XHToastSwift

Swift简洁轻便提示工具,一行代码既可完成提示信息显示 - 支持自定义显示位置及停留时间.
Swift
128
star
7

XHTabBarSwift

Swift,一行代码创建自定义tabBar - 支持小红点、数字角标、自定义高度
Swift
99
star
8

XHInputView

轻量级评论输入框,支持多种样式,支持占位符设置等等...
Objective-C
84
star
9

XHChatQQ

一行代码调用QQ客户端,发起临时会话.
Objective-C
80
star
10

XHLogHelper

NSLog输出Json数据,自动转换.---1.补全缺失"",2.数组( )转换为[ ],3.中文unicode编码转换为中文.
Objective-C
57
star
11

XHPhoto

一行代码搞定照片选择,支持相册/相机及设置是否裁剪
Objective-C
52
star
12

XHTabBar

一行代码创建自定义tabBar - 支持小红点、数字角标、自定义高度
Objective-C
49
star
13

XHNetworkCacheSwift

Swift,一行代码将网络数据持久化 - 支持数据同步/异步写入及更新、缓存数据读取、获取缓存数据大小、缓存数据清除.
Swift
29
star
14

AutoLayout

此项目主要介绍AutoLayout的一些进阶用法
Objective-C
25
star
15

XHDate

时间格式字符串格式化输出为任意格式
Objective-C
23
star
16

XHNetworkSwift

swift,基于Alamofire数据请求工具 - 支持POST/GET数据请求,文件上传,文件下载.
Swift
22
star
17

XHNetworking

基于AFNNetworking 3.x 的轻量级数据请求库,支持数据自动/手动缓存
Objective-C
15
star
18

XHCategories

方便实用的类扩展
Objective-C
14
star
19

XHNavBar

快速创建navigationBar,支持系统navigationBar及自定义navigationBar
Objective-C
11
star
20

BBRSACryptor-XHAdd

1行代码调用(RSA公钥、私钥生成,客户端RSA加密、解密,RSA签名,签名验证等
C
9
star
21

XHRefreshViewController

Objective-C
3
star
22

MyBlogExample

C++
2
star
23

iOSDeviceSupport

Xcode真机调试文件
1
star