使用SDWebImage为imageview加载图像,如何获得图像的宽度?

时间:2012-11-04 12:08:49

标签: iphone ios sdwebimage

当我使用setImageWithURL加载在线图片时,我得到了0.000000,   但是当我加载本地图像时,我得到了正确的宽度。

NSURL * url1=[NSURL URLWithString:@"http://img.hb.aicdn.com/7f46b5eb65320f18f797a4a26ebe9ba328b547832f7b3-KYR0Xn_fw192"];
UIImageView * img2=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 192,400)];
[img2 setImageWithURL:url1];
//[img2 setImage:[UIImage imageNamed:@"0.gif"]];
//load local image

[self.view addSubview:img2];
CGFloat height1=img2.image.size.width;
NSLog(@"%f",height1);

1 个答案:

答案 0 :(得分:0)

我知道这是一个非常古老的问题,但我前一段时间遇到了同样的问题,并认为我的答案可以帮助遇到同样问题的人。

要获得图像宽度,您应该使用SDWebImageManager独立下载图像。我很确定它在他们的维基页面中有解释。

以下是执行任务的示例代码:

-(UIImage *)downloadImageAsync:(NSString *)imageKey
{
    NSLog(@"image key : %@",imageKey);
    __block UIImage *returnedImage;
    SDWebImageManager *manager = [SDWebImageManager sharedManager];
    [manager downloadWithURL:[NSURL URLWithString:imageKey] options:0 progress:^(NSUInteger receivedSize, long long expectedSize){
        NSLog(@"received size %d expected size %lld", receivedSize, expectedSize);

    }completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType,BOOL finished){
        if(image && finished) {
            returnedImage = image;
        }
    }];

    if(returnedImage == nil) {
        NSLog(@"Returned Image Nil");
    }
    return returnedImage;
}

因此,当UIImage完成下载时,您可以获得它的宽度和高度。希望这会有所帮助。

干杯。