UITableView图像在设备上滚动慢

时间:2013-06-05 23:00:16

标签: ios objective-c uitableview

我已经看到了一些类似的问题,但没有人能够帮助我,所以这就是为什么我用我的代码发布这个,因为我无法解决问题所在。

UITableView具有从Web服务获取的图像,但滚动似乎很慢。更确切地说,它在滚动时似乎滞后。

这是cellForRowAtIndexPath方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"ItemsCell";

    ItemsViewCell *cell = (ItemsViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    RSSItem *item = [[channel items] objectAtIndex:[indexPath row]];

    cell.titleLabel.text = [item title];
    cell.creatorLabel.text = [item creator];
    cell.pubTimeLabel.text = [item pubTime];

    if ([item thumbnail] != nil) {
        cell.thumbContainer.image = [item thumbnail];

    }
    else
        cell.thumbContainer.image = [UIImage imageNamed:@"defaultcellImage.png"];


    cell.thumbContainer.layer.shadowColor = [[UIColor blackColor] CGColor];
    cell.thumbContainer.layer.shadowOffset = CGSizeMake(-3.0, 3.0);
    cell.thumbContainer.layer.shadowOpacity = 0.5f;
    cell.thumbContainer.layer.shadowRadius = 3.0f;    

    if ([[TheFeedStore sharedStore] hasItemBeenRead:item]) {
        cell.titleLabel.textColor = [UIColor grayColor];
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
    }
    else
    {
        cell.titleLabel.textColor = [UIColor blackColor];
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
    }

    UIImage *background = [self cellBackgroundForRowAtIndexPath:indexPath];
    UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background];
    cellBackgroundView.image = background;
    cell.backgroundView = cellBackgroundView;


    return cell;
}

这是我的viewDidLoad方法:

- (void)viewDidLoad
{
    [super viewDidLoad];    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(dataSaved:)
                                              name:@"DataSaved" object:nil];    
}

- (void) dataSaved:(NSNotification *)notification{

    [self.tableView reloadData];
}

并在单独的文件中我下载图片如下:

- (void) downloadThumbnails:(NSURL *)finalUrl
{
    dispatch_group_async(((RSSChannel *)self.parentParserDelegate).imageDownloadGroup, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        NSMutableData *tempData = [NSData dataWithContentsOfURL:finalUrl];
        [tempData writeToURL:[self cachedFileURLFromFileName:self.thumbFile] atomically:YES];

        dispatch_async(dispatch_get_main_queue(), ^{

            thumbnail = [UIImage imageWithData:tempData];

            [[NSNotificationCenter defaultCenter] postNotificationName:@"DataSaved" object:nil];

      });
    });

}

当我在模拟器上测试项目时,它看起来很好并且没有滞后,而如果我在设备上尝试它,那么我可以看到这种慢速滚动行为。

一切似乎都很好。任何人都可以帮我指出问题所在。请不要建议使用SDWebImage或任何其他库来获取图像,如果您只是想通过Apple推荐LazyTableImage项目,也不要回答。感谢

更新:经过一些搜索后,看起来像是缩小了图片的大小,但是由于某些原因,可用的解决方案对我不起作用。

0 个答案:

没有答案