zoukankan      html  css  js  c++  java
  • ios 异步加载图片

    #import "AsyncImageView.h"
    @implementation AsyncImageView
     
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            // Initialization code
        }
        return self;
    }
     
     
    - (void)loadImageFromURL:(NSURL*)url {
        if (connection!=nil) { [connection release]; }
        if (data!=nil) { [data release]; }
        NSURLRequest* request = [NSURLRequest requestWithURL:url
                                                 cachePolicy:NSURLRequestUseProtocolCachePolicy
                                             timeoutInterval:60.0];
        connection = [[NSURLConnection alloc]
                      initWithRequest:request delegate:self];
    }
     
    - (void)connection:(NSURLConnection *)theConnection
        didReceiveData:(NSData *)incrementalData {
        if (data==nil) {
            data =
            [[NSMutableData alloc] initWithCapacity:2048];
        }
        [data appendData:incrementalData];
    }
     
    - (void)connectionDidFinishLoading:(NSURLConnection*)theConnection {
         
        [connection release];
        connection=nil;
         
        if ([[self subviews] count] > 0) {
            [[[self subviews] objectAtIndex:0] removeFromSuperview];
        }
         
        UIImageView *imageView = [[[UIImageView alloc] initWithImage:[UIImage imageWithData:data]] autorelease];
         
        imageView.contentMode = UIViewContentModeScaleAspectFit;
        imageView.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight );
         
        [self addSubview:imageView];
        imageView.frame = self.bounds;
        [imageView setNeedsLayout];
        [self setNeedsLayout];
        [data release];
        data=nil;
    }
     
    - (UIImage*) image {
        UIImageView* iv = [[self subviews] objectAtIndex:0];
        return [iv image];
    }
     
    - (void)dealloc {
        [connection cancel];
        [connection release];
        [data release];
        [super dealloc];
    }
    @end

    使用:

    AsyncImageView *asyncImage = [[AsyncImageView alloc] init];
    asyncImage.frame = CGRectMake(100, point_y, 95, 95)
    //圆角
    [asyncImage.layer setMasksToBounds:YES];  
    [asyncImage.layer setCornerRadius:15];
    [asyncImage loadImageFromURL:[NSURL URLWithString:@"www.istar.name/...."]];

    不过发现一个好东东, SDWebImage, 这个实在是太方便了 主页:https://github.com/rs/SDWebImage 1.下载下来放到project里面 2. 添加:MapKit.framework 3. #import “UIImageView+WebCache.h” 4. 使用:

    UIImageView *asyncImage = [[UIImageView alloc] init];
    [asyncImage setImageWithURL:[NSURL URLWithString:@"www.istar.name/...."]];

    本文固定链接: http://www.istar.name/blog/ios-async-image | Star's Blog

  • 相关阅读:
    Golang基础笔记
    PHP面试题
    PHP操作文件常用函数
    转:C#委托与事件
    转:Tkinter教程之Text(2)篇
    Tkinter教程之Text篇(1)
    转:Python 从FTP 下载数据的例子
    转:Python模块学习 ---- httplib HTTP协议客户端实现
    转:Python yield 使用浅析
    有用的网址地址
  • 原文地址:https://www.cnblogs.com/lihaibo-Leao/p/3284581.html
Copyright © 2011-2022 走看看