【问题标题】:problem when UIWebView to display gif imageUIWebView 显示 gif 图像时的问题
【发布时间】:2011-10-06 16:30:29
【问题描述】:

我想在一个视图中显示多个图像。图片是从网上下载的,是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 并将它们放入滚动视图中。

【问题讨论】:

    标签: ios uiwebview


    【解决方案1】:

    UIWebView 在显示 .GIF 图像时应该没有问题(正如您在测试中所证明的那样)。在您提供的 URL 中找不到图像时,通常会出现损坏的图标。因此可能需要检查您的图像 URL(通过在任何浏览器中打开 URL)。

    就我个人而言,我宁愿使用带有 UIImageViews 的 UIScrollView。 UIWebViews 在加载和显示其内容时往往相当缓慢。如果你想对用户对图像的操作做出反应,UIWebView 有另一个缺点:你需要实现一些 javascript 事件处理,当用户点击 UIWebView 中的一个图像时会有一个短暂但明显的延迟。如果您更进一步并想在图像上添加滑动或其他手势识别,则需要导入执行此操作的 javascript 库。如果您不需要用户对图像进行交互,那么这些缺点在您的情况下并不重要。另一方面,使用 UIWebView 非常方便,因为它会自动异步加载它的内容。

    带有 UIImageViews 的 UIScrollView 解决方案使用户交互处理变得非常容易。只需将 UIGestureRecognizers 添加到您的图像中即可。另一方面,如果你有很多图像或大图像,你不能同时加载它们,否则你会遇到内存警告。因此,您可能必须添加一些逻辑来仅加载当前显示的图像并释放不可见的图像。您还必须为图像实现异步加载,以免在图像加载时阻止滚动。

    如果您的图像都具有相同的大小,您可以使用 UITableView 来显示图像并使用它的内置重用表格单元来保持较小的内存占用。不过,您仍然必须实现异步加载。

    无论如何,我认为在这种情况下没有对错。如果您不需要用户交互,那么 UIWebView 更容易和更快地实现,但恕我直言 UIScrollView / UITableView 仍然会有更好的用户体验。

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2014-10-07
      • 2017-02-13
      • 2022-01-18
      • 2015-06-26
      相关资源
      最近更新 更多