在尝试使用GIF创建UIWebView之后,当调用webViewDidFinishLoad时,URL始终只是:空白.为什么?

 报告大王报报报报告大王 发布于 2023-02-09 10:04

我正在尝试显示一个带有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?

1 个回答
  • 然而,每次我得到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];
    

    2023-02-09 10:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有