XIBファイルで作成したUITableViewCellプロトタイプに基づいてテーブルを作成しています。セルは、いくつかのラベルと画像ビューで構成されており、デバイスの幅全体に合わせて拡大する必要があります。幅を拡大したら、高さも同じ比率で拡大したいので、画像は一貫して拡大縮小されます。
結果はまちまちです。次のコードを使用して、CELLのサイズを適切に設定することができました。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//pull the image from the array based on the indexPath
NSUInteger row = [indexPath row];
CITImage *image = [report.reportImages objectAtIndex:row];
UIImage *img = [UIImage imageWithData:image.imageData];
//see how we need to scale the image to make it fit within the full width of the screen
float scale = tableView.frame.size.width /img.size.width;
float imgHeight = img.size.height * scale;
//return the necessary cell height
return imgHeight;
}
問題は、セル内のUIImageViewのサイズが正しく変更されていないことです。描画の準備ができたら、次のコードを使用してセルのプロパティを設定しています。
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//pull the image from the array based on the indexPath
NSUInteger row = [indexPath row];
CITImage *image = [report.reportImages objectAtIndex:row];
UIImage *img = [UIImage imageWithData:image.imageData];
//attempt to get a reusable cell
CITImageCell *cell;
cell= [tableView dequeueReusableCellWithIdentifier:@"CITImageCellIdentifier"];
if (cell == nil) {
// Load the top-level objects from the custom cell XIB.
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CITImageCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
//see how we need to scale the image to make it fit within the full width of the screen
float scale = tableView.frame.size.width /img.size.width;
float imgHeight = img.size.height * scale;
NSLog (@"Height %f",cell.imageView.frame.size.height);
//size the image view
cell.imageView.frame = CGRectMake(0,34, tableView.frame.size.width, imgHeight+34 );
NSLog (@"Height %f",cell.imageView.frame.size.height);
//assign the image
cell.imageView.image = img;
//return the cell ready to go
return cell;
}
2つのNSLogステートメントは、高さの値が正しく計算されていることを確認しますが、画像が画面に表示されるとき、画像のサイズが正しく設定されることはめったにありません。ほとんどの場合、XIBファイルで定義されているサイズと同じですが、正しい高さになる場合もあります。あまり良いパターンは見つかりませんでした。これはテーブルの最初の項目ではなく、常に2番目、場合によっては4番目と5番目の項目です。
まだドキュメントや他の人の話を掘り下げていますが、私が最も得意とするのは、セルのサイズを正しく設定できることと、画像の高さが正しく計算されていることですが、表示されるのは一部の時間だけです。
何か助けはありますか?私が経験していることを示すスクリーンショットへのリンクは以下のとおりです(はい、昨夜の議論を見ていました)
ありがとう!