UIWebView的属性scalesPageToFit = YES在较大的图像上无法正常工作

时间:2013-05-22 05:18:27

标签: iphone ios uiwebview imagedownload

在iphone应用程序中我有一个webview,其中我想预览从互联网下载的一些图像,我的问题是一些图像不被视为适合webview的框架,但大多数情况下。我认为这是因为这些图像太大了。难道我做错了什么?请帮忙

我想要的只是在webview中加载图片以适应webview的框架。您可以提供一些其他代码,但需要关注webview而不是imageview。

这是我正在使用的代码。

self.documentData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.folio3.com/corp/wp-content/uploads/2013/02/Entrance_A-3.jpg"]];
self.webView.scalesPageToFit = YES;
[self.webView loadData:self.documentData MIMEType:@"image/jpeg" textEncodingName:@"utf-8" baseURL:nil];

此处是输出的屏幕截图(清楚地显示滚动指示符i-e图像不适合webview的框架)Output Screenshot

3 个答案:

答案 0 :(得分:4)

首先检查并设置UIWebViewviewDidLoad:的框架,如下所示..

webView.frame = self.view.frame;

使用此Delegate方法并将scalesPageToFit属性设置为bellow ..

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    webView.scalesPageToFit = YES;//set here
    return YES;
}

答案 1 :(得分:1)

此解决方案建立在Ammar Hasan的答案之上。而不是原来......

NSData *data = [NSData dataWithContentsOfURL:imageURL];
[self.webView loadData:data MIMEType:@"image/jpeg" textEncodingName:@"utf-8" baseURL:nil];

......你可以这样做:

NSString *photoWrapper = [NSString stringWithFormat:@"\
 <html>\n\
    <head>\n\
        <meta name=\"viewport\" content=\"width=device-width\" />\n\
        <style type=\"text/css\">\n\
            body {\n\
                margin: 0;\n\
                padding: 0;\n\
            }\n\
            img {\n\
                width: 100%%;\n\
            }\n\
        </style>\n\
    </head>\n\
    <body>\n\
        <img src=\"%@\" />\n\
    </body>\n\
</html>\
", URL];
[self.documentView loadHTMLString:photoWrapper baseURL:nil];

现在,即使Web视图的宽度小于图像宽度的一半,图像也会缩放到Web视图的宽度,这似乎是UIWebView强加的限制。图像仍然可以由用户缩放,我想要的。您可以通过将minimum-scalemaximum-scale添加到视口元标记来覆盖它。

答案 2 :(得分:0)

尝试将html内容用于WebView,如下面的代码

<html>
<head>
   <title>Title</title>
</head>
<body style='margin:0px; padding:0px;'>
   <img src='<your_image_url>' 
        style='max-width:320px; max-height:460px;' 
        alt='Your_Image_Name'/>
</body>
</html>

要重新调整图像大小,请使用CSS(级联样式表)样式,在图像样式属性中使用这些样式属性

  

最大宽度,最小宽度,宽度,最大高度,最小高度&amp;高度