2017-09-18 18 views
0

私のアプリケーションでは、サーバーから画像をダウンロードしてtableViewに表示する必要があります。ただし、アプリはすべての端末と両方の向き(横向きと縦向き)で作成されます。iOSダウンロードするための画像サイズ

私は現在2つの問題があります。まず、イメージをダウンロードするサイズを知りません。サイズのインデックスを作成し、使用されているデバイスによってはそれぞれのイメージをダウンロードしてください。しかし、画像のサイズが両方の向きで異なるという問題があります。向きが変更された場合、画像をダウンロードする必要がありますか?

第2に、画像とサイズをURLにパラメータとして渡すことができるサーバー上のスクリプトがあり、ダウンロードする前にサーバー上の画像のサイズを変更します。多くの人が同じ時間にアプリを使用していると処理時間がかかることがあるので、これはいい考えですか分かりません。

これは私が年齢のために持っていた質問であり、多くの記事や他の質問を読んだ後も私はまだ分かりません。明確にするために、@ 1x、@ 2x、@ 3xのフォーマットの違いを理解していますが、これらについては尋ねません。

ご不明な点がございましたら、お気軽にお問い合わせください。それぞれの情報を追加します。

答えて

1

私はあなたのためのすべての画像処理について説明します。

まず最初に、x1 x2 x3はアプリ内の画像用です。アイコン、背景などのアプリ内にある画像のアセットに追加されます。画像をダウンロードしたり、サーバから画像を取得したりするときは、x1 x2とx3については心配しないでください。これらの画像はデータであり、アセットではないからです。だから今それは別です。

さらに、元の質問に答えるために、必要なものを実装する3つの方法があります。バックエンドに各画像とそのURLのサイズを指定させてください。したがって、それぞれのフレームをプリセットして、イメージをダウンロードします。別の方法は、画像をダウンロードするときに自動的にセルのサイズを変更するように、tableViewを動的にすることです。 thisはあなたの質問に答えます。最後の解決策の1つは、UIImageでコンテンツモードというプロパティを使用することです。それについての詳細はhere

ハッピーコーディングです!

+0

ありがとうございます。まず、1xなどのコンセプトを理解できないと思います。これをクリアしていただきありがとうございます。 2番目に私はコンテンツモードの使用を知っていましたが、私はテーブルビューのサイズを変更しようとしていませんでしたが、サイズを変更する必要があります。 –

+0

すべてを表示したい場合は、元のサイズにイメージをダウンロードしてください。私にとっては、あなたの側からイメージを扱うほうが、後ろの人がそれらをすべて処理するのが遅くなるようにするよりも優れています。あなたがあなたのデバイスを回転させると、アプリケーションはあなたのイメージに沿って向きを変えられますので、自動レイアウト –

+0

を使用すると、向きを気にする必要はありません。これはとても良いアイデアです。しかし、画像のサイズには親指のルールがありますか?元のイメージは非常に大きく、さまざまなMBまでですが、これはあまりにも多くのことを知っていますので、私はそれを縮めることができる良いサイズを知っていますか? –

0

同じ画像ファイルの2つの異なるサイズの画像を保持し、それらの画像を向きに基づいて読み込むことをお勧めします。

たとえば、ポートレートモードでアプリを使用している場合は、画像「image_portrait.jpg」が読み込まれます。そうでない場合は「image_landscape.jpg」が読み込まれます。

1xはほとんど廃止されているので、2xおよび3xデバイスに基づいて異なるサイズの画像を保存することもできます。

誰かがiphone 5または6に画像を読み込んでいる場合、「image_portrait_2x.jpg」を6 plusまたは7 plus "image_portrait_3x.jpg"に読み込むことができます。

NSCacheを使用すると、向きが変わるたびに、またはテーブルビューがスクロールされるたびにイメージがダウンロードされないようにすることもできます。

関連する問題