使用URL设置UIImageView

时间:2017-03-11 18:11:09

标签: ios objective-c uiimageview

我使用以下方法在UIImageView中设置图像:

[self.imageView setImageWithURL:[NSURL URLWithString:urlString] placeholderImage:[UIImage imageNamed:@"random_image"]];

我可以按预期看到手机上的图像。

但是,如果我使用没有占位符参数的方法

[self.imageView setImageWithURL:[NSURL URLWithString:urlString]];

或者将placeholderImage传递为nil

[self.imageView setImageWithURL:[NSURL URLWithString:urlString] placeholderImage:nil];

然后没有设置图像,我的imageView是空白的。我了解占位符图片用于" 表示适合临时显示在您的扩展程序用户界面中的资产的当前状态。"。

我不明白它的缺席会影响我影响的方式。有什么指针吗?

3 个答案:

答案 0 :(得分:0)

如果设置默认占位符图像,则imageview会获得宽度和夜晚。否则,imageview框架可能是(0,0)。

或者

应该使用NSURLConnection异步下载图像,并且只有在完全下载后才能将其转换为UIImage并分配给图像视图

[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:imageUrl]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * response,NSData * data,NSError * error){

ImageViewName.image = [UIImage imageWithData:data];

}];

答案 1 :(得分:0)

我发现了这个问题。我在UITableViewCell中添加了一个名为 imageView 的图像视图。显然,UITableViewCell已经有一个同名的属性。我将myImageView的名称更改为cellImageView,现在,我不再需要占位符参数了!话虽如此,我仍然不明白屏幕背后发生了什么!

答案 2 :(得分:0)

我希望这些代码可以帮助你......

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
    dispatch_async(queue, ^{

        UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:
                                                 [NSURL URLWithString:@“image URL”]]];
        dispatch_sync(dispatch_get_main_queue(), ^{

                [[cell myimage] setImage:image];

            }
         });
    });