2012-01-06 26 views
7

Tôi sử dụng thư viện tải/lưu trữ hình ảnh SDWebImage khá nhiều bất cứ khi nào tôi hiển thị hình ảnh trong chế độ xem bảng.Cách sử dụng SDWebImage mà không cần bất kỳ bộ nhớ cache nào cho một ví dụ

Tôi thường thực hiện nó như vậy (theo phương thức xem bảng cellForRowAtIndexPath).

[cell.imageView setImageWithURL: 
[NSURL URLWithString:@"http://asite.com/animage.jpg"] 
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];   

Và điều đó sẽ tải phiên bản được lưu trong bộ nhớ cache nếu có.

Còn nếu tôi muốn sử dụng tính đơn giản của SDWebImage (với trình giữ chỗ/mã tải xuống mạnh) - nhưng không có bộ nhớ cache chỉ ở một nơi.

Tôi biết cách vô hiệu hóa bộ nhớ đệm trong SDWebImage, nhưng tôi không biết cách bạn gọi setImageWithUrl: placeholderImage: để đảm bảo rằng SDWebImage không sử dụng bất kỳ bộ nhớ cache nào?

Lý do tôi muốn làm điều này là tôi đang sử dụng nó để hiển thị webcam trong chế độ xem bảng (rõ ràng, bạn muốn cập nhật này mọi lúc).

Trả lời

6

Tôi khuyên bạn nên di chuyển khỏi Danh mục trên UIImageView và tạo phiên bản SDWebImageManager của riêng bạn. Bạn sẽ có nhiều quyền kiểm soát hơn nếu bạn sử dụng lớp SDImageCache.

Heres và ví dụ ngay từ SDWebImageManager bản thân:

[[SDImageCache sharedImageCache] storeImage:image 
            imageData:downloader.imageData 
            forKey:[downloader.url absoluteString] 
            toDisk:NO]; 

toDisk có lẽ là nơi tôi đã thay đổi BOOL để NO, người quản lý mặc định sử dụng bộ nhớ đệm đĩa. Bạn cũng có thể muốn xóa bộ nhớ tất cả vì vậy thường xuyên để hỗ trợ trực tuyến hình ảnh của bạn:

[[SDImageCache sharedImageCache] clearMemory]; 

Mã SDWebImageManager rất dễ làm theo và tôi tưởng tượng bạn sẽ không cần phải tái nhất của nó, chỉ cần một vài phần quan trọng để phù hợp với nhu cầu của bạn.

3

Thông tin cho bạn đây. Hãy chắc chắn rằng bạn sẽ có được phiên bản mới nhất của SDWebImage:

[anImageView setImageWithURL:[NSURL URLWithString:@"http://asite.com/animage.jpg"] 
      placeholderImage:[UIImage imageNamed:@"placeholder.png"] 
        options:SDWebImageCacheMemoryOnly]; 

Từ SDWebImageManager.h:

/** 
* This flag disables on-disk caching 
*/ 
SDWebImageCacheMemoryOnly = 1 << 2, 
0

Bạn chỉ cần sử dụng shouldCacheImagesInMemory tài sản từ SDImageCache và đặt nó là NO. Tính năng này khả dụng ở 3.7.4+.

0

Bạn có thể sử dụng SDWebImageDownloader. Nó không lưu trữ dữ liệu.

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