4

実行時に画像の URL を取得し、これらの画像をダウンロードしてテーブルに表示します。画像が非同期でダウンロードされています (SDWebImage を使用)。さらに重要なことは、これらすべての画像を実際のサイズで表示したいということです。初めて、テーブルが正常に読み込まれます。5 つ以上のセクション (各セクションには 1 つの行が含まれます) があり、テーブルをスクロールして reloadSections を使用してセクションを更新しようとすると、テーブルが間違ったセル イメージの高さで表示されます。誰でもこれで私を助けることができますか? 注: UITableViewAutomaticDimension を使用しています

[_imageViewSharedImage sd_setImageWithURL:[NSURL URLWithString:[_popUpManager.popUpDetails valueForKey:@"photo"]] placeholderImage:[UIImage imageNamed:@"placeholderBackground"] options:SDWebImageProgressiveDownload completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
{
     UIImage *croppedImage=[Util adjustImageSizeWhenCropping:image];     
     [_imageViewSharedImage setFrame:CGRectMake(_imageViewSharedImage.frame.origin.x,_imageViewSharedImage.frame.origin.y,croppedImage.size.width,croppedImage.size.height)];
     [_imageViewSharedImage setImage:croppedImage];
     [self setNeedsLayout];
     [self updateConstraintsIfNeeded];

}];
4

1 に答える 1

0

UITableViewAutomaticDimension を使用する場合、セルのコンテンツ ビュー内のすべての項目に対して、上から下まで自動レイアウト制約を指定する必要があります。あなたがそれをしたことを願っています。

また、自動レイアウトを使用している間は、フレームを調整しないように注意する必要があります。そうしたい場合は、制約を使用して実行してください。imageViewSharedImage の高さの制約と幅の制約のアウトレットを作成し、その定数を必要な値に設定します。

_imageViewHeightConstraint.constant = croppedImage.frame.size.height;
_imageViewWidthConstraint.constant = croppedImage.frame.size.width;

次に、layoutIfNeeded を呼び出します。

于 2015-12-03T05:18:17.543 に答える