当我使用SDWebImage时,滚动不正确

时间:2013-08-07 14:27:55

标签: ios uitableview uiscrollview sdwebimage

我有这个非常严重的滚动表格的问题。

最初我使用GCD在背景中加载图像并在表格单元格上设置。 但桌子没有顺利滚动。 所以我使用了SDWebImage,但后来发生了同样的事情。

有谁能让我知道这个的原因。为什么表滚动不如预期的那样平滑。

请让我知道您的观点,因为我的应用正在等待其发布,仅用于同一目的。

代码:

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

           NSString *CellIdentifier = @"Cell";
        customCellForExhibitor *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil)
        {
            NSArray *xibPath = [[NSBundle mainBundle]loadNibNamed:@"customCellForExhibitor" owner:self options:nil];
            for (id fileObject in xibPath)
            {
                cell = (customCellForExhibitor*)fileObject;
            }
        }

        objDataModel = [parserDataContentArray objectAtIndex:indexPath.section];

        cell.exhibitorNameLabel.text = [objDataModel exhibitorNameObjectClass];
        cell.exhibitorText.text = [objDataModel exhibitorOfferObjectClass];
        cell.exhibitorSponsorType.text = [objDataModel exhibitorSponsorTypeObjectClass];

        [cell.exhibitorSponsorType setTextAlignment:NSTextAlignmentRight];



//        #pragma mark GCD;
//    
//        NSString *ImageURL = [[parserDataContentArray objectAtIndex:indexPath.section] exhibitorImageObjectClass];
////        NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:ImageURL]];
////        cell.exhibitorImage.image = [UIImage imageWithData:imageData];
//
//        dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//        //this will start the image loading in bg
//        dispatch_async(concurrentQueue, ^{
//        NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:ImageURL]];
//        
//        //this will set the image when loading is finished
//        dispatch_async(dispatch_get_main_queue(), ^{
//            
//            cell.exhibitorImage.image = [UIImage imageWithData:imageData];
//            [cell setNeedsDisplay];
//
//                                                    });
//                                        });

     NSString *ImageURL = [[parserDataContentArray objectAtIndex:indexPath.section] exhibitorImageObjectClass];
     [cell.exhibitorImage setImageWithURL:[NSURL URLWithString:ImageURL]
                      placeholderImage:[UIImage imageNamed:@"placeholder.png"]];



        if ([cell.exhibitorSponsorType.text isEqualToString:@"Gold"]) {
            cell.exhibitorSponsorType.textColor = [UIColor colorWithRed:255/255.0 green:215/255.0 blue:0 alpha:1];

        }

        else if ([cell.exhibitorSponsorType.text isEqualToString:@"Silver"]){
            cell.exhibitorSponsorType.textColor = [UIColor colorWithRed:192/255.0 green:192/255.0 blue:192/255.0 alpha:1];
        }
        else cell.exhibitorSponsorType.textColor = [UIColor colorWithRed:229/255.0 green:228/255.0 blue:226/255.0 alpha:1];

        return cell;



}

谢谢 最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

使用延迟加载文件而不是这里是你可以在这里找到它的参考文件以及它是如何实现的。

https://stackoverflow.com/a/18032907/1305001

[cell addSubview:[self addViewWithURL:ImageURL NFrame:CGRectMake(0, 0, 50, 50)]];

在cellForRow

下添加此方法
-(UIView*)addViewWithURL:(NSString*)urlStr NFrame:(CGRect)rect
{
    LazyLoad *lazyLoading;

    lazyLoading = [[LazyLoad alloc] init];
    [lazyLoading setBackgroundColor:[UIColor grayColor]];
    [lazyLoading setFrame:rect];

    [lazyLoading loadImageFromURL:[NSURL URLWithString:urlStr]];
    return lazyLoading;
}

将LazyLoad.m文件的init方法中的占位符设置为

-(id)init{
    if (self==[super init]) {
        [self setImage:[UIImage imageNamed:@"placeholder.png"]];
    }
    return self;
}

将来自UIView的LazyLoad.h文件的superClass更改为UIImageView

@interface LazyLoad : UIImageView