1

Web サービスから取得したコンテンツを表示するテーブルビューを使用するアプリに取り組んでいます。一部のセルでは、寸法が不明な画像を表示する必要がある場合があります。これを行うには、固定幅 (292pts) のセル内に UIImageView を配置します。次に、このように、それに応じてイメージビューの高さを調整します。

イメージビューの高さ = 292/イメージの幅*イメージの高さ

たとえば、730*1250 の画像がある場合、高さを 500 に設定して縦横比を維持し、画像全体を表示します。

ただし、セルの高さを設定する必要がある場合、これは問題になる可能性があります。画像はインターネットからダウンロードされるため、セルを作成する必要があるときに画像のダウンロードが完了していない可能性があります。したがって、画像がダウンロードされるまでセルの高さを判断できず、UI をそれまで待機させることもできないため、代わりにプレースホルダー画像を表示し、セルの高さはその高さに基づいています。

画像がダウンロードされたら、画像ビューに表示する必要があります。高さがプレースホルダー画像の高さと一致していれば問題ありません。それ以外の場合は、画像ビューの高さを調整して補正し、セルの高さも変更する必要があります。しかし、問題は、セルが作成されると高さを変更できないことです。

私が考えることができる唯一の解決策は、UIImage を保存し、セルをリロードすることです。次に、既に画像があるので、画像に基づいてセルの高さを設定できます。ただし、これは非常に非効率的なソリューションのようです。作成後にセルの高さを調整する方法はありますか? セルのフレームを変更しようとしましたが、何もしませんでした。作成後にセルの高さを変更する方法はありますか、それともリロードするしかありませんか?

4

1 に答える 1

1

画像が読み込まれたらUITableViewDelegate、メソッドから行の正しい新しい高さを返していることを確認してください- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animationその行の高さの値を強制的に再チェックするために呼び出す必要がある場合があります。

于 2013-06-19T08:55:10.420 に答える