如何在某个帧中在iOS上显示GIF,在完全加载之前不显示它,并允许缩放?

Dou*_*ith 5 objective-c gif uiwebview uiimage ios

当用户选择GIF时,我想在显示GIF的所有内容上显示叠加层.

我知道在iOS上有几种方法可以做到这一点.有很好的UIImage + animatedGIF可以很好地工作,但是对于更长的GIF,它们非常慢并且不能以与UIWebView相同的速度播放(以准确的播放速度播放).

它很糟糕,因为如果那个类别没有慢慢播放它会做我需要的一切.

但事实并非如此,所以我尝试使用UIWebView,但是我对三件事感到困惑:

  1. 如何在呈现时显示UIWebView的大小(其框架)?我是否必须首先下载GIF作为UIImage然后检查其size属性?有没有更好的方法(可能需要一段时间)?

  2. 如何阻止它播放直到满载为止?

  3. 有了上面的类别,因为它只是一个UIImage,当我在滚动视图中将它作为UIImageView嵌入时,它很容易放大和缩小.这可以通过UIWebview实现吗?

Seg*_*gev 2

1.

我想到的第一个解决方案是将 webview 的背景设置为清晰的颜色,并在加载完成后将其放置在正确的位置。通常我使用

[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"]

但如果您将 webview 定向到 gif url,那么这将不起作用。

2.

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    webView.alpha = 1;
}
Run Code Online (Sandbox Code Playgroud)

这样,只有在 gif 完全加载后,UIWebView 才会显示给用户。

3.

[webView setScalesPageToFit:YES];
Run Code Online (Sandbox Code Playgroud)