2012-01-28 7 views
0

私はテーブルビューでデータを読み込み、各行は単純な画像500x300pxを持ち、セルのサイズに合わせてサイズを変更します。uitableviewcell画像のサイズを変更

イメージのサイズを変更できますか?

tableview.m

NSString *filePath = [[NSBundle mainBundle] pathForResource:receip.image ofType:@"jpg"]; 
UIImage *image = [UIImage imageWithContentsOfFile:filePath]; 
cell.imageView.image = image; 

答えて

1

は、私はあなたが、パフォーマンスを向上させるために、セルにそれらを置く前に、それらのサイズを変更する意味と仮定しますか?

次のようにして、コアグラフィックスでこれを行うことができます:それは計算コストの高いタスクですが

//define desired size 
CGSize size = CGSizeMake(100.0f, 100.0f); 

//create drawing context 
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0f); 

//draw image at new size 
[image drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height)]; 

//capture resultant image 
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

は注意してください。あなたは、おそらくバックグラウンドスレッド上で、すべての画像を事前にサイズ変更し、サイズ変更されたバージョンを配列に格納したいと思うでしょう。あなたは間違いなくを入力しないでくださいあなたのcellForRowAtIndexPathメソッドに上記のコードを貼りたい、またはあなたのテーブルのスクロールのパフォーマンスが悪魔的になるでしょう。

0

これらの画像が外部ソース(ウェブなど)からのものである場合。最初に元のファイルをキャッシュしてから(@Nick Lockwoodで説明したように)サイズを変更してください(高解像度の表示のために網膜ディスプレイの幅と高さが2倍必要)。そのプロセスが完了したら、「ダウンロード」が完了したことを示す信号を送信して、次のことを示すことができます。UITableView

イメージが既にアプリケーションバンドルにある場合は、そのサムバージョンを作成して追加することをお勧めしますあなたのバンドルに。より良いパフォーマンスのために。

+0

私のコード例では、網膜の表示は、3番目のパラメータで既に処理されています.UIGraphicsBeginImageContextWithOptions。 0.0をスケールとして渡すと、iPhone 3GSでは1.0、iPhone 4以降では2.0のスケールでコンテキストが作成されます。手作業で画像サイズを乗算する必要はありません。 –

+0

バンドル内の画像のサイズ変更についての良い点 - もしそれらがアプリと共に出荷されていれば、間違いなくサムネイルをあらかじめ生成する必要があります。 –

関連する問題