我正在尝试显示一个带有GIF的UIWebView,但只有GIF加载后才会显示.
我按如下方式加载GIF:
self.GIFWebView = [[UIWebView alloc] init]; self.GIFWebView.delegate = self; NSString *html = [NSString stringWithFormat:@"", post.url]; [self.GIFWebView loadHTMLString:html baseURL:nil];
哪个post
只是具有某些属性的对象,例如GIF的URL.
然后在webViewDidFinishLoad:
我展示网页视图:
- (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"%f", webView.scrollView.frame.size.width); NSLog(@"%@", [webView.request.URL absoluteString]); }
NSLog
然而,每次我得到"0"和"约:空白" .
为什么不正确加载GIF?
然而,每次我得到NSLog的"0"和"约:空白".
不奇怪.您告诉Web视图加载您在字符串中提供的HTML而不是为其提供请求.您记录的URL是请求URL,由于没有请求,因此没有请求URL.
为什么不正确加载GIF?
可能是因为您滥用了URL对象.看看代码:
NSString *html = [NSString stringWithFormat:@"<html><head></head><body><img src=\"%@\"></body></html>", post.url];
我们不知道是什么类型post.url
,但它可能NSURL*
.您可能正在将NSURL传递给格式字符串,这可能无法产生您正在寻找的结果.尝试传入一个字符串[post.url absoluteString]
而不是实际的NSURL对象.
此外,您可能希望html
在创建后立即记录该值,以便可以检查要发送到Web视图的完整HTML.
更新:要检查的其他一些事项:
你在主线程上运行有问题的代码吗?
线程的运行循环是否有时间?
您是否尝试过设置非零基本网址?
如果Web视图的委托有一个-webView:shouldStartLoadWithRequest:
方法,它是否返回YES?
如果您使用包含所需HTML的常量字符串和硬编码的URL而不是使用构造字符串,会发生+stringWithFormat:
什么?
测试设备是否连接到网络?(有时这是最简单的事情.)
如果您使用不同的图像,它是否正常工作?我注意到您使用的URL是动画.gif文件,请尝试使用非动画.gif或.jpg图像.
更新2:问题在于您创建Web视图.查看您显示的代码中的第一行:
self.GIFWebView = [[UIWebView alloc] init];
这看起来好一个典型的对象,但-init
不是一个视图中的指定初始化.你应该使用-initWithFrame:
.当我更改项目中的代码以使用正确的初始化程序时,图像在示例项目中正常加载:
UIWebView *GIFWebView = [[UIWebView alloc] initWithFrame:self.view.bounds];