iOS tableView的圖片緩衝非同步載入

來源:互聯網
上載者:User

iOS tableView的圖片緩衝非同步載入
1.建立一個viewController..h檔案實現UIScrollViewDelegate和UITableViewDelegate,並聲明ICTableViewDelegate(用來實現圖片有緩衝則載入圖片,無緩衝則請求圖片並緩衝下來再載入) .h檔案如下

#define KimageKey @"photoFileUrl"  ///為數組中每個item中存放圖片URL的key名字#define KidKey @"activityId"    ///為數組中每個item的id  用於緩衝之用#import @protocol ICTableViewDelegate@required    -(void)cellImageDidLoad:(NSIndexPath *)indexPath image:(NSMutableArray *)imageArray;@end@interface ICTableViewController : UIViewController {@public    id  WQTableVieDelegate;    NSMutableArray *tableDataArray;    UITableView *wqTable;} @end

.m檔案如下:
- (void)loadCellImage{//方法實現實現圖片有緩衝則載入圖片,無緩衝則請求圖片並緩衝下來再載入        NSArray *indexPathsForLoad = [wqTable indexPathsForVisibleRows];    for (NSIndexPath *item in indexPathsForLoad) {        NSInteger rowNumberForCell = item.row;        NSLog(@"%li",(long)rowNumberForCell);        NSLog(@"%li",(unsigned long)[tableDataArray count]);        if (rowNumberForCell >[tableDataArray count] -1) {            return;        }        NSString *imageStr =tableDataArray[rowNumberForCell][@"photoFileUrl"];        NSLog(@"%@",imageStr);        NSMutableArray *imageArray = [NSMutableArray array];        if([imageStr length]!=0){            NSArray *photoUrl = [imageStr componentsSeparatedByString:MULTI_FILES_SEPARATOR];            for(int i=0;i然後具體子類繼承這個父類,並實現ICTableViewDelegate代理方法
#pragma mark ICTableViewDelegate-(void)cellImageDidLoad:(NSIndexPath *)indexPath image:(NSMutableArray *)imageArray{    EventShowTableViewCell *cell = (EventShowTableViewCell *)[_eventListTableView cellForRowAtIndexPath:indexPath];    if([imageArray count]!=0){        for(int i=0;iCustomPhotoBtn載入圖片封裝的一個控制項                UIImage *thumbImg = [FileTransferHelp thumbnailWithImage:(UIImage *)imageArray[i] size:CGSizeMake(60, 40)];                [photoBtn.imgView setImage:thumbImg];                [cell.contentView addSubview:photoBtn];            }else{                CustomPhotoBtn *photoBtn = (CustomPhotoBtn *)[cell.contentView viewWithTag:(i +1)*10];                UIImage *thumbImg = [FileTransferHelp thumbnailWithImage:(UIImage *)imageArray[i] size:CGSizeMake(60, 40)];                [photoBtn.imgView setImage:thumbImg];                [cell addSubview:photoBtn];            }        }    }    }
在子類設定每個cell的內容的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

裡寫下
CustomPhotoBtn *photoBtn = [CustomPhotoBtn customPhotoBtn];//載入圖片封裝的一個控制項    [photoBtn.fileFullName setText:url];        NSString *imageName = [url stringByAppendingString:[NSString stringWithFormat:@".temp"]];        NSLog(@"imageName%@",imageName);    NSString *imageDataPath = [NSHomeDirectory() stringByAppendingPathComponent:[@"Library/Caches/" stringByAppendingString:imageName]]//從緩衝中找圖片    NSLog(@"imageDataPath%@",imageDataPath);//    [data writeToFile:imageDataPath atomically:YES];    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfFile:imageDataPath]];    UIImage *thumbImg = [FileTransferHelp thumbnailWithImage:image size:CGSizeMake(60, 40)];    if (thumbImg) {        [photoBtn.imgView setImage:thumbImg];    }        return photoBtn;



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.