• 轻量级UIImageView分类缓存 库 AsyncImageView 使用


    轻量级UIImageView分类缓存 库 AsyncImageView 使用

    一:

    二:使用

       主要演示结合UITableview的使用

        demo代码:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil)
        {
            //create new cell
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
            
            //common settings
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
            cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
            cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
            cell.imageView.frame = CGRectMake(0.0f, 0.0f, 44.0f, 44.0f);
            cell.imageView.clipsToBounds = YES;
        }
        else
        {
            //cancel loading previous image for cell
            [[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:cell.imageView];
        }
        
        //set placeholder image or cell won't update when image is loaded
        cell.imageView.image = [UIImage imageNamed:@"Placeholder.png"];
        
        //load the image
        cell.imageView.imageURL = self.imageURLs[(NSUInteger)indexPath.row];
        
        //display image path
        cell.textLabel.text = [[(NSURL *)self.imageURLs[(NSUInteger)indexPath.row] path] lastPathComponent];
        
        return cell;
    }
    View Code

         demo 代码:

      

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        
    #define IMAGE_VIEW_TAG 99
        
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil)
        {
            //create new cell
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
            
            //add AsyncImageView to cell
            AsyncImageView *imageView = [[AsyncImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 44.0f, 44.0f)];
            imageView.contentMode = UIViewContentModeScaleAspectFill;
            imageView.clipsToBounds = YES;
            imageView.tag = IMAGE_VIEW_TAG;
            [cell addSubview:imageView];
            
            //common settings
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
            cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
            cell.indentationWidth = 44.0f;
            cell.indentationLevel = 1;
        }
        
        //get image view
        AsyncImageView *imageView = (AsyncImageView *)[cell viewWithTag:IMAGE_VIEW_TAG];
        
        //cancel loading previous image for cell
        [[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:imageView];
        
        //load the image
        imageView.imageURL = [_imageURLs objectAtIndex:indexPath.row];
            
        //display image path
        cell.textLabel.text = [[[_imageURLs objectAtIndex:indexPath.row] path] lastPathComponent];
    
        return cell;
    }
    View Code

    三:可用api

      

    @interface AsyncImageLoader : NSObject
    
    + (AsyncImageLoader *)sharedLoader;
    + (NSCache *)defaultCache;
    
    @property (nonatomic, strong) NSCache *cache;
    @property (nonatomic, assign) NSUInteger concurrentLoads;
    @property (nonatomic, assign) NSTimeInterval loadingTimeout;
    
    - (void)loadImageWithURL:(NSURL *)URL target:(id)target success:(SEL)success failure:(SEL)failure;
    - (void)loadImageWithURL:(NSURL *)URL target:(id)target action:(SEL)action;
    - (void)loadImageWithURL:(NSURL *)URL;
    - (void)cancelLoadingURL:(NSURL *)URL target:(id)target action:(SEL)action;
    - (void)cancelLoadingURL:(NSURL *)URL target:(id)target;
    - (void)cancelLoadingURL:(NSURL *)URL;
    - (void)cancelLoadingImagesForTarget:(id)target action:(SEL)action;
    - (void)cancelLoadingImagesForTarget:(id)target;
    - (NSURL *)URLForTarget:(id)target action:(SEL)action;
    - (NSURL *)URLForTarget:(id)target;
    
    @end
    
    
    @interface UIImageView(AsyncImageView)
    
    @property (nonatomic, strong) NSURL *imageURL;
    
    @end
    
    
    @interface AsyncImageView : UIImageView
    
    @property (nonatomic, assign) BOOL showActivityIndicator;
    @property (nonatomic, assign) UIActivityIndicatorViewStyle activityIndicatorStyle;
    @property (nonatomic, assign) NSTimeInterval crossfadeDuration;
    
    @end
    View Code
  • 相关阅读:
    module5-01-jQuery 基础
    module4-JavaScript 高级特性、ES6 新特性
    module4-05-ES6新特性
    module4-04-正则表达式
    module4-03-继承和函数进阶
    module4-02-面向对象编程案例 随机方块、贪吃蛇
    module4-01-面向对象编程、原型链、构造函数、原型对象
    module3-Web APIs 网页应用编程
    module3-05-定时器的应用-简单动画-无缝滚动-轮播图
    人生赢家从规划开始,先觉知、量己力、衡外情、重实践、善反省
  • 原文地址:https://www.cnblogs.com/cocoajin/p/3611614.html
Copyright © 2020-2023  润新知