2015-05-07 17 views
5

Tôi đang cố gắng tải một UIImage từ URL của nó với completionplaceholder hình ảnh, nhưng không phải là UIImage cũng như trình giữ chỗ UIImage được tải.Tải UIImage từ URL trong iOS

Đây là mã của tôi:

NSURL *url = [NSURL URLWithString:@"http://assets.gearlive.com/tvenvy/blogimages/stewiegriffin.jpg"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    [self.imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"bg.png"] 

     success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
      imageView.image = image; 
     } 
     failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {} 
    ]; 
+1

Mã của bạn có vẻ chính xác. Chỉ cần đặt trình giữ chỗ trực tiếp 'self.imageView.image = [UIImage imageNamed: @" bg.png "];' để đảm bảo chế độ xem hình ảnh của bạn hiển thị và đặt hình ảnh hoạt động .. – lukya

+0

Nếu đặt hình ảnh trực tiếp không hoạt động, đặt màu nền của chế độ xem hình ảnh 'self.imageView.backgroundColor = [UIColor redColor];' và chạy ứng dụng để đảm bảo chế độ xem hình ảnh hiển thị trên màn hình .. – lukya

+0

@AdhRadwan tôi đã đăng câu trả lời thử và thông báo cho tôi. –

Trả lời

11

Sử dụng AFnetworking nơi bạn cũng có thể đặt hình ảnh trình giữ chỗ nếu url không chính xác. Điều này hiệu quả hơn khi bạn đang tải hình ảnh trong chế độ xem bảng hoặc chế độ xem bộ sưu tập.

nhập UIImageView+AFNetworking.h

#import "UIImageView+AFNetworking.h" 

và chúng tôi đoạn mã sau:

NSString *[email protected]"http://www.fnordware.com/superpng/pnggrad16rgb.png"; 
[self.image setImageWithURL:[NSURL URLWithString:url1] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

Bạn có thể tải nó từ gitHub

+0

Tôi đã sử dụng SDImage, không bao giờ biết AF có thể làm điều đó nữa ... Cảm ơn –

+0

Tôi có thể sử dụng url hình ảnh làm hình ảnh trình giữ chỗ không? –

+0

Đối với bất kỳ nhà phát triển nào trong tương lai, việc nhập không còn cần thiết nữa. –

14

Hãy thử mã này để có được hình ảnh ...

Code:

NSURL *url = [NSURL URLWithString:@"http://www.fnordware.com/superpng/pnggrad16rgb.png"]; 

NSData *data = [NSData dataWithContentsOfURL:url]; 
UIImage *image = [UIImage imageWithData:data]; 

[self.imageview1 setImage:image];  

Lưu ý: tôi đã sử dụng url thử nghiệm. bạn có thể sử dụng url của mình.

Cập nhật: Swift 3.0 Mã:

let url = URL(string: "http://www.fnordware.com/superpng/pnggrad16rgb.png") 
    do { 
     let data = try Data(contentsOf: url!) 
     var image = UIImage(data: data) 
     self.imageView.image = image 
     print(image) 
    } catch { 

    } 

Lưu ý: Trong Xcode phiên bản 7.1 trở lên bạn cần phải thiết lập ATS (App Giao thông vận tải an). Để thiết lập ATS bạn cần viết mã dưới đây trong tập tin info.plist. Đảm bảo url của hình ảnh không được là 0.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 
+0

Thử nghiệm này trong sân chơi, chuyển đổi sang nhanh chóng 3, và hoạt động hoàn hảo! Cảm ơn! – Simon

+0

@Simon Bạn được chào đón .... !!! –

+0

@Simon Cảm ơn thông tin phản hồi của bạn, tôi đã cập nhật câu trả lời và cũng thêm mã cho nhanh chóng. –

3

Kiểm tra AsyncImageView. Trình tải ảnh không đồng bộ tốt nhất AFAIK của nó. tất cả những gì bạn phải làm là đặt URL hình ảnh thành số lần xem hình ảnh và phần còn lại được xử lý. bao gồm cả bộ nhớ đệm.

+1

cái này rất dễ sử dụng – thanhbinh84

2

tôi thấy vấn đề

Mã của tôi hoạt động chính xác.

Vấn đề là ở đâu đó trong mã của tôi, ImageViewnil. Cảm ơn tất cả

Các vấn đề liên quan