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

  • 相关阅读:
    类与继承
    闭包、原型链和继承
    ajax(下)和“承诺”
    ajax(上)
    Ubuntu电源键软关机设置
    金老师语录摘要(七)
    金老师语录摘要(六)
    金老师语录摘要(四)
    金老师语录摘要(三)
    金老师语录摘要(二)
  • 原文地址:https://www.cnblogs.com/lihaibo-Leao/p/3284581.html
Copyright © 2011-2022 走看看