1
我正在使用UI集合視圖以垂直滾動格式顯示包含圖像及其關聯數據(如日期,名稱)的單元格。出現視圖時從服務器獲取圖像數據。當單元出現時,獲取的數據將被轉換爲UIImage。iOS集合視圖滾動延遲
問題是滾動是laggy。每當一個新的單元即將出現時,滾動會掛起一點點。有沒有辦法解決這個問題?我正考慮在後臺線程中開始將NSData轉換爲UIImage以防止延遲。不知道這是否正確。
我正在使用UI集合視圖以垂直滾動格式顯示包含圖像及其關聯數據(如日期,名稱)的單元格。出現視圖時從服務器獲取圖像數據。當單元出現時,獲取的數據將被轉換爲UIImage。iOS集合視圖滾動延遲
問題是滾動是laggy。每當一個新的單元即將出現時,滾動會掛起一點點。有沒有辦法解決這個問題?我正考慮在後臺線程中開始將NSData轉換爲UIImage以防止延遲。不知道這是否正確。
由於堆說,你應該異步加載圖像,並有精彩UIImageView
類別,使這很容易做到,即類別中SDWebImage或AFNetworking。這些UIImageView
類別不僅可以異步加載圖像,還可以緩存,必要時取消網絡操作等。如果您自己正確執行此操作(捕獲所有列舉的所有功能),它將花費大量代碼,但如果它真的很簡單你使用這些類別之一。
例如,如果使用SDWebImage,您可以:
#import "UIImageView+WebCache.h"
然後:
[cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
if (error)
NSLog(@"%s: setImageWithURL error: %@", __FUNCTION__, error);
}];
或者,如果使用AFNetworking:
#import "UIImageView+AFNetworking.h"
和
[cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
或
[cell.imageView setImageWithURLRequest:[NSURLRequest requestWithURL:url] placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:nil failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"%s: setImageWithURLRequest error: %@", __FUNCTION__, error);
}];
使用帶佔位符的SDWebImage – stack