从网站获取图像列表并显示它

时间:2012-04-30 16:29:36

标签: ios xcode

我正在创建一个iOS应用程序,假设获取网站上显示的图像列表并在屏幕上显示为图块(类似于显示图片库中的图像)。我可以在UIImageView中显示来自URL的单个图像,但是当它显示来自网站的完整图像列表时,我一无所知。任何有关正确方向的帮助或任何有用的教程将不胜感激。

2 个答案:

答案 0 :(得分:1)

这个问题分为两部分。我会给你一个快速的答复。

1:下载图像列表

这可以像使用+ 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:显示图像列表

这可以像使用UITableView和使用UITableViewCellStyleDefault样式的UITableViewCells一样简单,然后在每个单元格中设置imageView属性。

为了更好地查看您可以编写的图像,请使用从UITableViewCell子类化的自定义表格视图单元格。这样您就可以使用图像的自定义位置,并将图像的大小设置为您想要的大小。

在更复杂的场景中,您可以创建自己的自定义视图,其中包含您将放置所有图像的UIScrollView。

答案 1 :(得分:0)

我会设置一个网站服务来抓取这个" list" (假设您实际上没有对服务器的内部访问权限)。我建议使用libcurl和PHP来获得列表。

http://www.sitepoint.com/own-web-service-php-xml-rpc/

然后以JSON格式吐出列表并使用iOS可用的库解析它:

Native JSON support in iOS?

(可能需要看看最近在JSON解析方面取得了哪些进展,我似乎记得有关这个特定主题的事情在最近的历史中经历了一些变化)。

关于libcurl和PHP的官方文档:

http://php.net/manual/en/book.curl.php

(从上面的STACKOVERFLOW问题中获取):

  

更新了iOS 5的答案:

     

JSON支持现在是带有NSJSONSerialization的iOS原生支持,但在   性能方面,与JSONKit相比,它相形见绌。

     

我建议您使用JSONKit而不是NSJSONSerialization。