0

当我使用 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);
4

1 回答 1

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 完成下载后,你可以得到它的宽度和高度。希望这可以帮助。

干杯。

于 2013-03-14T04:18:00.377 回答