`
niCe
  • 浏览: 42147 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

UITableView 异步加载图片

 
阅读更多
- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

  [NSThread detachNewThreadSelector:@selector(startImageread:) toTarget:self withObject:indexPath];

}
startImageread是获取照片的方法,我是从本地读取的



-(void)startImageread:(NSIndexPath *)indexPath
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
    NSInteger row = [indexPath row];
    NSDictionary *imageNameDictionary = [self.DataArray objectAtIndex:[DataArray count]-row-1];
    
    NSString *readImageaname=[imageNameDictionary objectForKey:@"objectTimedata"];
    //NSLog(@"SaveData%@",imageNameDictionary);
    //NSLog(readImageaname);
    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    if (!documentsDirectory) {
        NSLog(@"Documents directory not found!");
    }
    
    
    NSString *Data2File = [documentsDirectory stringByAppendingPathComponent:readImageaname];

    UIImage *newimage=[UIImage imageWithContentsOfFile:Data2File];//读取的图片
    //UIImage *newimage=[[UIImage alloc] initWithContentsOfFile:Data2File];
    //printf("startImageread****indexPath:%d\r\n",row);
    NSDictionary *cellimage = [NSDictionary dictionaryWithObjectsAndKeys:
    
                                   indexPath, @"indexPathdtat", 
                                   newimage,@"image",
                                   nil];
    //[NSThread sleepForTimeInterval:3];//不能让线程睡否则太慢了
    
    [self performSelectorOnMainThread:@selector(_setOCellImage:) withObject:cellimage waitUntilDone:YES];
    [pool release];
}
_setOCellImage是缓存刷新cell的图像
这里需要传递两个参数一个是indexPath 一个是图片newimage但是performSelectorOnMainThread只能带一个参数
这个问题困扰我半天,于是我把indexPath和newimage放到一个数组NSDictionary *cellimage传过来的

-(void)_setOCellImage:( id )celldata
{
    UIImage *newimage=[celldata objectForKey:@"image"];//从参数celldata里面拿出来图片
       [self.DataTable cellForRowAtIndexPath:[celldata objectForKey:@"indexPathdtat"]].imageView.image=newimage;
}

 

分享到:
评论

相关推荐

    iphone UITableView异步加载图片

    因此,"iPhone UITableView异步加载图片"是解决这个问题的关键技术。 异步加载图片的基本思想是在主线程之外的其他线程(通常为后台线程)下载和处理图片,避免阻塞用户界面。在UITableView中,我们通常会在cell...

    uitableVIew异步加载图片

    在iOS开发中,`UITableView`是用于展示列表数据的关键组件,而异步加载图片是提高用户体验的重要技术。在用户滚动列表时,为了防止卡顿,我们通常不在主线程上加载图片,而是通过异步方式在后台线程处理。在描述中...

    UITableView异步加载图片(类似于EGOImageView的效果)

    实现UITableView异步加载图片,类似于EGOImageView的效果。 而且自己写的代码比较清晰,容易理解,易于扩展。可以实现指定placehoderImage以及指定imageURL,来进行图片的异步加载。 同时,如果图片已经请求过,则...

    uitableview异步加载图片(iOS)

    在本教程中,我们将探讨如何在UITableView中实现异步加载图片,以提高用户体验。 首先,我们需要了解异步加载的基本概念。异步加载是指在主线程之外创建一个新的线程来执行耗时的操作,如网络请求或图片解码,这样...

    UITableView加载图片 官方范例

    2. **异步加载图片**:在UITableView中直接加载网络图片会严重影响滚动性能,因为这会导致大量的网络请求并发执行。为了解决这个问题,范例采用了异步加载策略,即在后台线程下载图片,避免了UI卡顿。此外,为了...

    异步加载图片显示到控件上

    在编程领域,尤其是在开发用户界面(UI)时,异步加载图片是一项常见的需求。它能够提升用户体验,防止因大量图片加载导致的界面卡顿。本文将深入探讨如何实现异步加载图片并将其显示到控件上,特别适合初学者学习。...

    UITableView网络图片加载优化 延迟加载

    - 在`cellForRowAt`方法中,根据单元格的索引判断其是否在视口内,如果在则开始加载图片,不在则等待滚动到可视区时再加载。 4. **流量控制**: 为了更好地控制流量,可以设置图片加载策略,比如限制同时加载的...

    ios tableview 异步 加载图片

    在iOS开发中,...总结,异步加载图片是优化UITableView性能的关键技术,通过第三方库或自定义实现,可以有效地提升应用的用户体验。在实际项目中,我们需要结合各种优化技巧,确保图片加载既快速又节省资源。

    iOS 图片异步加载 图片缓存

    在这个例子中,`sd_setImage`方法会在后台异步加载图片,并在完成后更新UIImageView。 **图片缓存** 图片缓存是另一种优化策略,用于存储已下载的图片,以便再次需要时能快速访问。缓存分为内存缓存和磁盘缓存。...

    IPhone TableView 图片异步加载

    3. **AsyncImageView.h/m**:这是一个自定义的图片视图,它扩展了 `UIImageView`,并实现了异步加载图片的功能。在 `UITableView` 的每个单元格中,我们通常会使用这种视图来显示图片。它会在后台线程中加载图片,并...

    异步加载和缓存

    在iOS开发中,异步加载和缓存是两个至关重要的概念,特别是在处理大量数据和多媒体内容时,如在UITableView或UICollectionView中显示图片。这两个技术能够显著提升应用性能,提高用户体验,同时节省系统资源。 首先...

    UITableView实现对图片的展示

    5. 如果图片是从网络加载的,你可能需要使用异步加载技术,如GCD(Grand Central Dispatch)或第三方库如SDWebImage,避免阻塞主线程。 6. 在数据源准备好后,调用`tableView.reloadData()`刷新表格视图。 最后,...

    ios iphone异步加载图片EGOTableViewPullRefresh

    EGOTableViewPullRefresh 是一个优秀的开源库,它专门针对UITableView进行了优化,实现了下拉刷新功能,并且支持异步加载图片,极大地提高了图片加载速度。这个库对于那些需要展示大量网络图片,如新闻、社交媒体...

    android ExpandableListView子集异步加载+IphoneTreeView

    而"android ExpandableListView子集异步加载+IphoneTreeView"这个主题主要关注如何在`ExpandableListView`中实现子集的异步加载以及模仿iPhone风格的树形视图(`IphoneTreeView`)。 首先,让我们深入理解`...

    ios-异步加载网络图片到视图上,并且实现内存中的缓存.zip

    在iOS开发中,异步加载网络图片到视图上是一个常见的需求,特别是在处理大量图片的列表展示时。这个压缩包“ios-异步加载网络图片到视图上,并且实现内存中的缓存.zip”显然是一个示例项目,旨在教授如何在iOS应用中...

    EGOImageLoading图片列表异步加载

    异步加载图片可以显著提高应用的性能和用户体验,避免UI线程阻塞导致应用卡顿。EGOImageLoading是一个专门用于解决这个问题的开源库,它能够高效地实现图片的异步加载和自动缓存管理。 EGOImageLoading的设计目标是...

    UITableView的带有图片

    通常,我们会从服务器获取图片URL,然后使用异步加载库(如SDWebImage或Kingfisher)下载并缓存图片,以提高性能。 3. **图片加载库**: - SDWebImage:这是一个流行的库,支持自动缓存网络图像,防止重复加载,...

    TableView异步加载网络xml数据

    UITableView异步加载网络数据的效果,适合初学者,主要学习 1、UITableView通过网络加载数据(这里加载rss的xml格式数据) 2、网络链接及其委托方法的使用 3、获取加载网络数据的总大小以及每次下载数据的大小 4、...

    RunLoop优化tableView加载大量图片卡顿问题

    7. **利用 ImageIO 框架**:ImageIO提供了一个名为`CGImageSourceCreateWithData`的函数,可以从数据源中异步加载图片,进一步提升性能。 通过以上方法,我们可以有效地利用RunLoop机制优化UITableView加载大量图片...

Global site tag (gtag.js) - Google Analytics