2016-10-21 7 views
1

私は、tableViewを使用して(Instagramと同様に)サーバーから送信されたイメージを表示するアプリケーションを持っています。バックグラウンドスレッドでUITableViewイメージを読み込みます。

私が得たサーバーから:

  • のフルサイズ画像URL
  • 説明(文字列)
  • 画像の幅
  • 画像の高さ

をし、私はそのカスタムセルを持っています私が望むようにそれを提示する。

Instagramと同様に、画像の高さは固定されていないため、セルの高さは画像の高さに動的に変化します。

私は、サーバーから取得した画像は本当に大きいですので、私はそのように、すべての画像がWidth - Screen's width, Height - Based of the width (keeps the ratio)するクロップ:

func imageWithImage (sourceImage:UIImage, scaledToWidth: CGFloat) -> UIImage { 
    let oldWidth = sourceImage.size.width 
    let scaleFactor = scaledToWidth/oldWidth 

    let newHeight = sourceImage.size.height * scaleFactor 
    let newWidth = oldWidth * scaleFactor 

    UIGraphicsBeginImageContext(CGSize(width:newWidth, height:newHeight)) 
    sourceImage.draw(in: CGRect(x:0, y:0, width:newWidth, height:newHeight)) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return newImage! 
} 

私の問題は、のtableViewが非常に遅いということです。だから私は背景のスレッドで画像を読み込んでトリミングし、その読み込み中にデフォルト画像を表示することを考えました。

私は(... AlamofireKingfisherなどのようなSDKを使用して)することを試みたが、その後細胞(UITableViewAutomaticDimension)のサイズは(あるため、動的高さ)混乱してスクロールしながら、画像が間違ったイメージに変更時にはスクロール中にクラッシュすることもあります。

ここで私はここで質問しています。バックグラウンドスレッドでセルを読み込み、動的サイズ、正しい写真を維持したり、クラッシュを避けるにはどうすればいいですか?

お返事ありがとうございました。

注:私はあなたのお気に入りを選択し、スウィフトとObjective-Cの両方を知っている:)

+0

上記の要件を達成するには、 'SDWebImage'ライブラリの本当に良いオプションを試してみましたか? – CodeChanger

答えて

1

私はこのためAlamofireを使用することをお勧めします。 this answerをチェックして、Alamofireとカスタムのソリューションを提供してください。

編集後のコメント:

画像に基づいてセルの高さを計算するために、あなたはので、heightForRowAtIndexPathがcellForRowAtIndexPath前に呼び出されますよう、あなたのtableViewをリロードする前に、それらの画像をダウンロードしてキャッシュする必要があります。実際にそのセルのプロパティとして設定する前に、イメージの高さを知る必要があります。 This answerがそのために必要なものです。

+0

私はAlamofireを使用しています、私が書いたことに注意してください、ありがとう! '私はAlamofireを使ってみましたが、セルのサイズ(UITableViewAutomaticDimension)は(動的な高さのため)混乱していました。画像はスクロール中に間違った画像に変更され、時にはスクロール中にクラッシュしました。 ' –

+0

残念ですAlamofireの質問には言及がありません。 – kanstraktar

+0

私は自分の答えを編集しました。私はバックスレッドで画像を読み込むよりも画像の高さを計算することに焦点を当てているので、あなたもあなたの質問の主題を編集すべきだと思います。これはあなたのために動作することを願っています。 – kanstraktar

関連する問題