2013-05-22 9 views
7

In einer iPhone App habe ich ein Webview, in dem ich ein Bild aus dem Internet herunterladen möchte, mein Problem ist, dass einige Bilder nicht in den Rahmen passen von Webview, aber die meisten tun. Ich denke, das liegt daran, dass diese Bilder zu groß sind. Mache ich etwas falsch? Bitte helfenUIWebView's Eigenschaft scalesPageToFit = JA funktioniert nicht richtig bei größeren Bildern

Was ich will ist einfach Bild in Webview geladen, um den Rahmen von Webview. Sie können mir einen anderen Code zur Verfügung stellen, müssen aber in Bezug auf Webview nicht Imageview sein.

Hier ist der Code, den ich verwende.

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]; 

plus hier ist der Screenshot der Ausgabe (zeigt deutlich, Scroll-Indikatoren, dh Bild nicht in Webansicht des Rahmens passen) Output Screenshot

+0

Wenn jemand eine bessere Antwort in die gleiche Richtung wie Ammar will: http://stackoverflow.com/a/4670989/1861181 – Morkrom

Antwort

0

Versuchen Sie HTML-Inhalte für WebView, wie der folgende Code

<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> 

Um die Größe Bild Verwendung CSS (kaskadierte Stylesheet) Styling, spielen mit den diesen Stileigenschaften in Bild Stil-Attribut

mit

max-Breite, min-Breite, Breite, Höhe max-min-height & Höhe

+0

OK, aber wo im iOS geht das? Wie wird es umgesetzt? – Morkrom

4

Zuerst prüfen und einstellen Rahmen von UIWebView in viewDidLoad: wie unten ..

webView.frame = self.view.frame; 

nach dem Gebrauch dieser Delegate Methode und setzte scalesPageToFit Eigenschaft wie unten ..

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

Ich habe dies versucht, aber immer noch das gleiche Problem auftritt – iMemon

+0

@iMemon sehen diese Antworten und versuchen Sie es auch http://stackoverflow.com/questions/2350135/uiwebview-wont-zoom-even-after-setting-scalespagetofit-to-yes :) –

1

Diese soluti baut auf der Antwort von Ammar Hasan auf. Anstelle der ursprünglichen ...

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

... Sie können dies tun:

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]; 

nun das Bild auf die Breite der Bahn Ansicht skaliert wird, auch wenn die Web-Ansicht weniger als die Hälfte der Breite des Bildes, was ein Limit zu sein scheint, das UIWebView sonst auferlegt. Das Bild kann immer noch vom Benutzer skaliert werden, was ich wollte. Sie können dies überschreiben, indem Sie dem Viewport-Metatag minimum-scale und maximum-scale hinzufügen.