0

UITableViewCellには、その中に表示されるUIImageがあります。

画像はサーバーから取得され、NSDataとしてNSDictionaryに保存されます。

この画像は、以下に示すようにUIImageGraphicsBeginImageContextを使用して非網膜デバイス用にサイズ変更されます。

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

            static NSString *cellID=@"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に割り当てる必要がありますか。

4

1 に答える 1

0

ダウンロード時にディスクに書き込みます。

そうすれば、OSはデータを怠惰に読み取ってキャッシュすることができ、画像データを常にメモリに保存する必要はありません。

于 2012-12-29T18:09:52.080 に答える