2012-12-29 60 views
0

UITableViewCell具有在其中顯示的UIImage。具有UIImage縮放性能的UITableViewCell

圖像從服務器獲取,並作爲NSData存儲在NSDictionary中。

此圖像使用UIImageGraphicsBeginImageContext調整爲非視網膜設備,如下所示。

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

      static NSString *[email protected]"Cell"; 
      UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellID]; 
      NSDictionary *myDictionary=[self.tableObject objectAtIndex:indexPath.row]; 
      NSData *imgData=[myDictionary objectForKey:@"icon"]; 
      UIImage *img=[UIImage imageWithData:imgData]; 
      if(isRetina]){ 
       cell.iconImageView.image=img; 
      }else{ 
       CGRect imgRect=CGRectMake(0, 0, img.size.width/2.0, img.size.height/2.0); 
       UIGraphicsBeginImageContext(imgRect.size); 
       [img drawInRect:imgRect]; 
       UIImage *newImg=UIGraphicsGetImageFromCurrentImageContext(); 
       UIGraphicsEndImageContext(); 
       cell.iconImageView.image=newImg; 
      } 
} 

它會更好的辦法,減少內存佔用還是應該把它存儲在磁盤上,然後從它訪問圖像,並將其分配給cell.iconImageView.image;

回答

0

下載它時將其寫入磁盤。

這樣,操作系統可以懶惰讀取數據,緩存它,你沒有將圖像數據在內存中的所有時間

+0

即使我有同樣的感覺,但我很擔心從讀取圖像性能磁盤在 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath – andyPaul

+0

但是,它需要相當長的時間從磁盤讀取它,而不是在應用程序中。本身使用[UIImage imageNamed:@「a.png」]; – andyPaul