ios
  • uiwebview
  • 2011-07-16 96 views 3 likes 
    3

    我想在視圖中顯示多個圖像。圖像從互聯網上下載,並且是gif格式。當UIWebView顯示gif圖像時出現問題

    這是我做的,但只顯示默認的破碎圖標。

    _images是NSArray中存儲的圖像文件的路徑

    NSMutableString *html = [NSMutableString string]; 
    
    for (NSString *str in _images) { 
        [html appendFormat:@"<img src='%@' />", str]; 
    } 
    
    [_webView loadHTMLString:html baseURL:nil]; 
    

    我嘗試這樣做,圖像的顯示,所以我相信UIWebView的是能夠顯示我的圖片。

    NSData *data = [NSData dataWithContentsOfFile:[_images lastObject]]; 
    [_webView loadData:data MIMEType:@"image/gif" textEncodingName:@"UTF-8" baseURL:nil]; 
    

    或者是任何其他好方法來顯示多個圖像?否則,我可能不得不爲每個圖像創建一個UIImageView並將它們放入滾動視圖中。

    回答

    2

    UIWebView不應該有顯示.GIF圖像的問題(正如你在測試中證明的那樣)。當您在所提供的URL上找不到圖像時,通常會顯示損壞的圖標。因此可能需要檢查您的圖片網址(通過在任何瀏覽器中打開網址)。

    就我個人而言,我寧願在UIImageViews中使用UIScrollView。 UIWebViews在加載和顯示其內容時往往很慢。如果你想對圖像的用戶操作做出反應,UIWebView還有另一個缺點:你需要實現一些JavaScript事件處理,並且當用戶點擊UIWebView中的圖像之一時有一個短暫但明顯的延遲。如果你走得更遠,想要在你的圖像上添加滑動或其他手勢識別,你需要導入一個JavaScript庫來做到這一點。如果你不需要在你的圖像上進行用戶交互,那麼這些缺點並不在你的案例中。另一方面,使用UIWebView非常方便,因爲它會自動異步加載它的內容。

    帶有UIImageViews解決方案的UIScrollView使得用戶交互處理非常簡單。只需將UIGestureRecognizers添加到您的圖像中即可。另一方面,如果您有大量圖像或大圖像,則無法同時加載全部圖像,否則會遇到內存警告。因此,您可能必須添加一些邏輯才能加載當前顯示的圖像並釋放不可見的圖像。您還必須實現圖像的異步加載,以便在加載圖像時不阻止滾動。

    如果您的圖像全部具有相同的大小,您可以使用UITableView來顯示圖像並使用它的表格單元的內置重用來保持較小的內存佔用。儘管如此,你仍然需要實現異步加載。

    無論如何,我認爲在這種情況下是沒有對錯的。如果你不需要用戶交互,那麼UIWebView實現起來更容易和更快,但是恕我直言,UIScrollView/UITableView仍然會有更好的用戶體驗。

    相關問題