Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
343 views
in Technique[技术] by (71.8m points)

iphone - Set UIImageView image using a url

Is it possible to read a url to an image and set a UIImageView to the image at this url?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

For such a straightforward task I would highly recommend against integrating projects such as Three20, the library is a monster and not very straightforward to get up and running.

I would instead recommend this approach:

NSString *imageUrl = @"http://www.foo.com/myImage.jpg";
[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:imageUrl]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
    myImageView.image = [UIImage imageWithData:data];
}];

EDIT for Swift 3.0

let urlString = "http://www.foo.com/myImage.jpg"
guard let url = URL(string: urlString) else { return }
URLSession.shared.dataTask(with: url) { (data, response, error) in
    if error != nil {
        print("Failed fetching image:", error)
        return
    }

    guard let response = response as? HTTPURLResponse, response.statusCode == 200 else {
        print("Not a proper HTTPURLResponse or statusCode")
        return
    }

    DispatchQueue.main.async {
        self.myImageView.image = UIImage(data: data!)
    }
}.resume()

*EDIT for Swift 2.0

let request = NSURLRequest(URL: NSURL(string: urlString)!)

NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) -> Void in

    if error != nil {
        print("Failed to load image for url: (urlString), error: (error?.description)")
        return
    }

    guard let httpResponse = response as? NSHTTPURLResponse else {
        print("Not an NSHTTPURLResponse from loading url: (urlString)")
        return
    }

    if httpResponse.statusCode != 200 {
        print("Bad response statusCode: (httpResponse.statusCode) while loading url: (urlString)")
        return
    }

    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        self.myImageView.image = UIImage(data: data!)
    })

    }.resume()

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...