如何下载背景图像以在iOS中使用imageView进行设置?

时间:2016-02-16 12:38:29

标签: ios objective-c uiimageview

我使用了以下代码,但对我没用。

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(markerView.bounds.size.width/10, markerView.bounds.size.height/4, markerView.bounds.size.width*4/5, markerView.bounds.size.height/1.5)];

NSString *strPath = [NSString stringWithFormat:@"%@",[[arrTemp valueForKey:@"image"] objectAtIndex:marker.accessibilityLabel.integerValue]];
NSLog(@"img path %@", strPath);

dispatch_async(dispatch_get_main_queue(), ^{
  UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:strPath]]];
  imgView.image = img;
});

3 个答案:

答案 0 :(得分:2)

您可以尝试以下代码。 它对我有用。

Vec<Token>

答案 1 :(得分:2)

在项目中添加SDWebImage文件夹,然后选择以下选项。要将文件夹的副本添加到目标项目和创建组。

然后将标题调用为

#import "UIImageView+WebCache.h"

确保您要添加到要使用该库的所有目标。

enter image description here

Github处的文档:

将SDWebImage项目添加到项目中

  • 从下载页面下载并解压缩最新版本的框架
  • 右键单击项目导航器,然后选择“将文件添加到”项目“:
  • 在对话框中,选择SDWebImage.framework:
  • 选中“将项目复制到目标组的文件夹(如果需要)”复选框

或者您可以使用cocoa pods作为建议的其他答案。

最后称为

[imgView sd_setImageWithURL:[NSURL URLWithString:strPath] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

答案 2 :(得分:0)

您可以尝试DispatchQueue.async(xcode 8.0 +):

let queue = DispatchQueue(label: "com.mydomain.queue3")
queue.async {
    let imageURL: URL = URL(string: "https://www.brightedge.com/blog/wp-content/uploads/2014/08/Google-Secure-Search_SEL.jpg")!
    guard let imageData = try? Data(contentsOf: imageURL) else {
        return
    }
    DispatchQueue.main.async {
        self.imageView.image = UIImage(data: imageData)
    }
}

或将第一个DispatchQueue替换为URLSession.dataTask

let imageURL: URL = URL(string: "https://www.brightedge.com/blog/wp-content/uploads/2014/08/Google-Secure-Search_SEL.jpg")!

(URLSession(configuration: URLSessionConfiguration.default)).dataTask(with: imageURL, completionHandler: { (imageData, response, error) in

    if let data = imageData {
        DispatchQueue.main.async {
            self.imageView.image = UIImage(data: data)
        }
    }
}).resume()