Web サイトに存在する画像のリストを取得し、それらを画面にタイルとして表示することを想定している iOS アプリケーションを作成しています (写真ライブラリからの画像の表示に似ています)。UIImageView の URL から単一の画像を表示できますが、Web サイトから画像の完全なリストを表示することになると、私は無知です。正しい方向への助けや有用なチュートリアルをいただければ幸いです。
3 に答える
この質問には2つの部分があります。それぞれに迅速に対応します。
1:画像のリストをダウンロードする
これは、Webサイトを完全に制御できる場合は+ arrayWithContentsOfURL:を使用するのと同じくらい簡単です。UIスレッドをブロックしないように、必ずダウンロードをディスパッチしてください。
NSURL *URL = self.URLOfImages;
dispatch_queue_t dispatch = dispatch_queue_create("fetch.images", NULL);
dispatch_async(dispatch, ^{
NSArray *images = [NSArray arrayWithContentsOfURL:URL];
dispatch_async(dispatch_get_main_queue(), ^{
self.images = images;
});
});
dispatch_release(dispatch);
注:URLは、NSArrayが期待する正確な形式を返す必要があり、self.imagesは、それ自体をリロードする必要があることをビューに通知する必要があります。[self.tableView reloadData]
。
URLをあまり制御できない場合は、NSURLRequestなどを使用してリクエストを作成し、NSURLConnectionなどを使用してデータをフェッチし、応答から画像のリストを解析して画像の配列を作成する必要があります。
はるかに複雑なシナリオでは、ページングが関係します。これには、リストの一部をダウンロードするだけで済みます。さらに多くの画像が必要になるため、さらに多くの画像を要求します。
2:画像のリストを表示します
これは、UITableViewCellStyleDefaultスタイルを使用するUITableViewCellsでUITableViewを使用し、各セルにimageViewプロパティを設定するのと同じくらい簡単です。
画像をよりよく表示するには、UITableViewCellからサブクラス化されたカスタムテーブルビューセルを使用して記述できます。これにより、画像のカスタム配置を使用して、画像のサイズを好きなように設定できます。
はるかに複雑なシナリオでは、すべての画像を配置するUIScrollViewを含む独自のカスタムビューを作成できます。
この「リスト」を取得するWebサービスをセットアップします(実際にサーバーへの内部アクセス権がないと仮定します)。リストを取得するには、libcurlとPHPを使用することをお勧めします。
http://www.sitepoint.com/own-web-service-php-xml-rpc/
次に、リストをJSON形式で吐き出し、iOSで利用可能なライブラリを使用して解析します。
(JSON解析に関して最近どのような進歩があったかを確認する必要があるかもしれませんが、この特定のトピックに関する何かが最近の歴史で変化を経験したことを覚えているようです)。
libcurlとPHPに関する公式ドキュメント:
http://php.net/manual/en/book.curl.php
(上記のSTACKOVERFLOWの質問から取得):
iOS 5の回答を更新しました:
JSONサポートはNSJSONSerializationを使用してiOSにネイティブになりましたが、パフォーマンスの点では、JSONKitと比較すると見劣りします。
NSJSONSerializationではなくJSONKitを使用することをお勧めします。