2012-04-30 82 views
2

我正在創建一個iOS應用程序,用於獲取網站上顯示的圖像列表並將它們顯示爲屏幕上的圖像(類似於顯示圖像中的圖像圖書館)。我可以在UIImageView中顯示來自URL的單個圖像,但是當從網站上顯示完整圖像列表時,我無能爲力。任何幫助正確的方向或任何有用的教程將不勝感激。從網站獲取圖像列表並顯示它

+0

劑量的圖像已經ID's自己的自定義視圖? (使用螢火蟲或Opera蜻蜓檢查) –

回答

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:顯示圖像

列表這可能是因爲使用與使用UITableViewCellStyleDefault樣式UITableViewCells一個UITableView一樣簡單,然後設置在每個小區中的ImageView的屬性。

爲了更好地瞭解您可以編寫的圖像,請使用從UITableViewCell分類的自定義表格視圖單元格。這將允許您使用圖像的自定義位置,並將圖像的大小設置爲您想要的大小。

在一個更復雜的塞納里奧,你可以創建一個包含一個UIScrollView,你將使所有的形象透視。

+0

謝謝Jeffery,有一件事我不明白。完全控制網站是什麼意思? – Waqar

+0

您可以在服務器上創建新的URL,並且可以控制從這些URL返回的內容類型,數據和格式。對於+ arrayWithContentsOfURL:要工作,您需要URL來返回格式正確的plist(請參閱:[瞭解XML屬性列表](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/PropertyLists /UnderstandXMLPlist/UnderstandXMLPlist.html))。返回的plist無法以任何方式進行包裝,編碼或轉義。 –

0

我會設置一個Web服務來刮擦這個「列表」(假設您實際上沒有內部訪問服務器)。我會建議使用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。

+1

另請注意,如果您在設備上執行此操作,則必須將網站置於白名單中,否則iOS將無法訪問它。 –

+0

謝謝。事實上它不在設備上工作。我試圖在互聯網上搜索,但我無法找到任何參考如何我可以在白名單中添加URl。你能否引導我或指點我一些教程或什麼? – Waqar

相關問題