2012-06-30 64 views
0

當我爲每個單元格設置圖像時,我的應用程序滾動速度非常慢。我嘗試過使用SDImageWeb項目,但它仍然滾動一樣慢,並且單元格上的所有圖像視圖都會變得越來越緊張。這是我在行中單元格中的代碼。iPhone UITableView使用單元格滾動速度慢ImageView

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

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 


} 



RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row]; 

//root path of image...used to check if image exists for this article 
NSString *substring = @"http://316apps.com/ipreachersblog/wp"; 
NSRange textRange = [entry.articleImage rangeOfString:substring]; 

if(textRange.location != NSNotFound){ 
    NSString *thearticleImage = entry.articleImage; 
    NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"(?i)\\b((?:[a-z][\\w-]+:(?:/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»「」‘’]))" options:NSRegularExpressionCaseInsensitive error:NULL]; 
    NSString *someString = thearticleImage; 
    NSString *oneurl = [someString substringWithRange:[expression rangeOfFirstMatchInString:someString options:NSMatchingCompleted range:NSMakeRange(0, [someString length])]]; 
    NSURL *picimage = [NSURL URLWithString:oneurl]; 
    UIFont *cellFont = [UIFont fontWithName:@"ArialRoundedMTBold" size:15]; 

    UIFont *cellFont2 = [UIFont fontWithName:@"ArialRoundedMTBold" size:12];  
    NSData * urlData = [NSData dataWithContentsOfURL: picimage]; 
    UIImage * imageweb = [UIImage imageWithData: urlData]; 
    CGSize newSize = CGSizeMake(69, 69); 
    UIGraphicsBeginImageContext(newSize); 
    [imageweb drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    CALayer * l = [cell.imageView layer]; 
    [l setMasksToBounds:YES]; 
    [l setCornerRadius:11]; 
    [l setBorderWidth:2.0]; 
    [l setBorderColor:[[UIColor blackColor] CGColor]]; 
    cell.textLabel.text = entry.articleTitle; 

    cell.textLabel.font = cellFont; 
    cell.detailTextLabel.font = cellFont2; 
    cell.imageView.image = newImage; 
    cell.imageView.contentMode = UIViewContentModeScaleAspectFill; 


} 
else { 
//loads when no featured image present 

} 


return cell; 
} 

任何想法?

回答

2

樣本項目的問題是在這裏

NSURL *picimage = [NSURL URLWithString:oneurl]; 
UIFont *cellFont = [UIFont fontWithName:@"ArialRoundedMTBold" size:15]; 

UIFont *cellFont2 = [UIFont fontWithName:@"ArialRoundedMTBold" size:12];  
NSData * urlData = [NSData dataWithContentsOfURL: picimage]; 
UIImage * imageweb = [UIImage imageWithData: urlData]; 
CGSize newSize = CGSizeMake(69, 69); 
UIGraphicsBeginImageContext(newSize); 
[imageweb drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
CALayer * l = [cell.imageView layer]; 
[l setMasksToBounds:YES]; 
[l setCornerRadius:11]; 
[l setBorderWidth:2.0]; 
[l setBorderColor:[[UIColor blackColor] CGColor]]; 

對於每次滾動視圖3單元格下載圖像。在這裏,你所調整不推薦

圖像您需要設置圖像延遲加載這樣

[cell.imageView setImageWithURL:picimage placeholderImage:[UIImage imageNamed:@"loadingPicture.png"]]; 

和每一件事情都會被這種被照顧。你可以通過導入這個SDImageCache類來得到它,它將在這個示例代碼中可用here