我正在尝试在其中显示带有GIF的UIWebView,但只有在GIF加载后才会显示。
我按如下方式加载GIF:
self.GIFWebView = [[UIWebView alloc] init];
self.GIFWebView.delegate = self;
NSString *html = [NSString stringWithFormat:@"<html><head></head><body><img src=\"%@\"></body></html>", 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?
答案 0 :(得分:6)
然而,每次NSLog都会得到“0”和“about:blank”。
不足为奇。您告诉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。
更新:要检查的其他一些事项:
-webView:shouldStartLoadWithRequest:
方法,是否返回YES?+stringWithFormat:
构建字符串,会发生什么?更新2:问题在于您创建了网络视图。查看您显示的代码中的第一行:
self.GIFWebView = [[UIWebView alloc] init];
对于典型对象,看起来没问题,但-init
不是视图的指定初始值设定项。您应该使用-initWithFrame:
代替。当我更改项目中的代码以使用正确的初始化程序时,图像在示例项目中正常加载:
UIWebView *GIFWebView = [[UIWebView alloc] initWithFrame:self.view.bounds];