• 轻量级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
  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/cocoajin/p/3611614.html
Copyright © 2020-2023  润新知