Ios 如何从UIWebView全屏显示图像?

Ios 如何从UIWebView全屏显示图像?,ios,uiwebview,Ios,Uiwebview,我有一个UIWebView,它显示来自web的文本和图像 我想像在UIWebView中点击图像一样,全屏显示图像,包括方向 因此,我使用以下代码进行了测试 - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { if (navigationType == UIW

我有一个
UIWebView
,它显示来自web的文本和图像

我想像在UIWebView中点击图像一样,全屏显示图像,包括方向

因此,我使用以下代码进行了测试

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        NSURL *URL = [request URL];

        NSData *data = [[NSData alloc] initWithContentsOfURL:URL];
        UIImageView *imageView  = [[UIImageView alloc] initWithImage:[UIImage imageWithData:data]];

        GGFullscreenImageViewController *vc = [[GGFullscreenImageViewController alloc] init];
        vc.liftedImageView = imageView;

        [self presentViewController:vc animated:YES completion:nil];

        return NO;
    }

    else
    {
        return YES;
    }
}
当我在
UIWebView
中点击图像时,它不工作并显示错误

2014-03-12 13:59:40.397 MMSP[1368:a0b] *** Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer bounds contains NaN: [0 0; nan nan]'
*** First throw call stack:
还有什么可以像我上面说的那样做吗?

a)我想你应该为GGFullscreenImageViewController设置框架

b) 通常(与崩溃无关),我认为您应该使用[[NSData alloc]initWithContentsOfURL:URL];在此时加载图像。单击链接时,它将等待图像下载完成,然后显示它,从而导致用户的“延迟”


相反,只需将URL交给您的GGFullscreenImageViewController,即视图控制器,并让它显示活动指示器,直到它下载了图像。

如果您的
GGFullscreenImageViewController
上已经有了
UIImageView
设置,那么为什么不创建
UIImage
并分配,而不是创建新的
UIImageView
。分配新创建的实例时,
liftedImageView
中的图像视图实例将丢失

就这样做,

NSData *data = [[NSData alloc] initWithContentsOfURL:URL];
GGFullscreenImageViewController *vc = [[GGFullscreenImageViewController alloc] init];
vc.liftedImageView.image = [UIImage imageWithData:data];
理想情况下,您应该通过提供
initWithUrl:
方法将图像url传递给
GGFullscreenImageViewController
。异步下载映像,或者可以使用开源代码,例如:


希望这有帮助

我没有设置imageView框架,因为GGFullScreenImageViewController可以自动设置。你确定url包含图像数据吗?如何直接显示GGFullScreenImageViewController的url?很抱歉,我假设GGFullScreenImageViewController是你自己编写的类。既然不是这样,你似乎无法以上述方式意识到这一点。您可以修改GitHub中的it代码以允许此操作,也可以在shouldStartLoadWithRequest方法中显示活动指示器(即,创建一个新的半透明视图并显示),并在完成后加载GGFullScreenImageViewController。