• 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

  • 相关阅读:
    C# Mongo Client 2.4.2创建索引
    MongoDB Driver:使用正确的姿势连接复制集
    C# Mongo Client 2.4.2判断是否存在表
    c# Mongodb批量更新
    c# Mongodb创建自增列
    class A where T:new()是什么意思
    Dapper Extensions中修改Dialect
    golang 中的 sizeof 以及 golang中的 union
    将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct
    golang 与 c语言 之间传递指针的规则提案
  • 原文地址:https://www.cnblogs.com/lihaibo-Leao/p/3284581.html
Copyright © 2020-2023  润新知