2011-08-17 6 views
0

셀을 그리는 동안 서버에서 이미지를로드하지 않는 이유는 무엇입니까?셀 그리기 중 서버에서 이미지 가져 오기

내 앱에서 이미지 URL이 포함 된 서버의 데이터도 가져옵니다. 이제 셀을 그리고 서버에서 이미지를 가져 와서 그 이미지 URL을 사용합니다. 이제 이미지가 실제로 브라우저에 표시 될 때 URL에 표시 되더라도 이미지가 표시되지 않는 경우가 있습니다.

이 문제가 발생할 수있는 셀 도면 제한이 있습니까? 서버에서 데이터를 가져올 때 이미지를 가져와야합니까?

이미지가 실제로 그려지기 전에 셀 렌더링이 발생합니까?

+0

항상 다운로드가 완료되지 않는 문제가 해결됩니다 셀이 그려지기 전에 다시 URL을 얻 자마자 이미지를 얻는 것이 좋습니다. –

+0

스레드에서 이미지를 다운로드합니다. – Abhinav

+0

스레드가 특정 이미지에 대한 다운로드를 완료 한 후에는 셀을 업데이트해야합니다. [reloadRowsAtIndexPaths ... 테이블을 사용하십시오. 어떤 이미지 URL이 어떤 셀에 그려지는지 설명하는 매핑이 필요합니다. – RabinDev

답변

0

UI 표시 스레드 인 기본 스레드가있는 것입니다. 이 스레드의 URL에서 이미지를 가져 와서 본질적으로 셀을 차단하고 있습니다 (예 : 스크롤). 또한 이미지가 다운로드되는 과정에있는 경우 일 수 있습니다. 다운로드 할 때까지 이미지가 표시되지 않습니다.

일반적으로 UITableView은 표시 할 준비가 될 때까지 셀을 표시하지 않습니다. 주 스레드에서 이미지 다운로드를 수행하면 성능이 저하됩니다. 당신이해야 할 일은 URL이 &에서 이미지를 다운로드하는 배경 스레드를 시작한 다음 다운로드가 준비되면 이미지 내용의 셀을 업데이트하는 것입니다.

가장 좋은 방법은 기본 이미지 또는 기본 이미지 다운로드가 완료되면 교체되는 회 전자와 같은 초기 자리 표시자를 사용하는 것입니다.

이 모든 것을 구현할 필요가 없다는 걱정은하지 마십시오. 바퀴를 재발 명할 필요가 없습니다. 여기에 내가 사용하는 멋진 라이브러리가 있습니다. - UIImageView + WebCache

0

분명히, 이미지 다운로드에는 더 많은 시간이 걸립니다. 다운로드가 완료 될 때까지 자리 표시 자 이미지를 사용해야합니다. 사용자가 스크롤을 멈출 수는 없습니다.

+0

거기에 회 전자가 있고 서버에서 반환 된 이미지가 없으면 자리 표시 자 이미지가 표시됩니다. 이것이 잘못된 방법인지 알고 싶습니다. – Abhinav

+0

괜찮습니다. 또 다른 방법은 처음부터 자리 표시 자 이미지를 유지하는 것입니다 (회 전자를 사용하지 않고). 다운로드가 끝나면 다운로드 한 이미지로 자리 표시자를 바꾸는 것입니다. 아마도 UI 잡음이 줄어들 것입니다. – Akshay

0

서버에서 데이터를 가져 와서 해당 정보를보기로 전달하면 이미지를 가져옵니다. 이 해결할 희망이 당신의 문제

1
NSString *imgUrl = [ImageURLArray objectAtIndex:indexPath.row]; 

if(imgUrl != nil) 
{ 
    NSString * ImagePath; 

    NetworkManager *manager = [[NetworkManager alloc] init]; 

    ImagePath = [manager GetFile:imgUrl]; 

    [manager release]; 

    manager = nil; 

    if(ImagePath != nil) 

    { 

      UIImage *newImage = [UIImage imageWithData:[NSData dataWithContentsOfFile:ImagePath]];   

     UIGraphicsBeginImageContext(CGSizeMake(50, 50)); 

     // now redraw our image in a smaller rectangle. 
     [newImage drawInRect:CGRectMake(25, 10, 30, 30)]; 

     newImage = UIGraphicsGetImageFromCurrentImageContext(); 

     UIGraphicsEndImageContext(); 

     cell.imageView.image = newImage; 
    } 
} 
    return cell; 

}

희망

ImageView *imageView = [[ImageView alloc] initWithNibName:@"ImageView" bundle:[NSBundle mainBundle]]; 
imageView.prod=self.prod; 
imageView.hidesBottomBarWhenPushed = YES; 
[self.navigationController pushViewController:imageView animated:YES]; 
[imageView release]; 
imageView=nil; 

처럼 이것은 이미지 같은 소리

관련 문제