2013-05-22 7 views
7

W aplikacji na iPhone mam podgląd internetowy, w którym chcę wyświetlić podgląd niektórych obrazów pobranych z internetu, moim problemem jest to, że niektóre obrazy nie są wyświetlane jako mieszczące się w ramce widoku sieci, ale większość robi. Myślę, że wynika to z faktu, że te obrazy są zbyt duże. Czy robię coś źle? Proszę pomóc, abySkale właściwości UIWebView WłaściwośćPageToFit = TAK nie działa poprawnie na większych obrazach

To, czego chcę, to po prostu ładowanie obrazu w widoku strony internetowej, aby dopasować go do klatki internetowej. Możesz podać mi inny kod, ale musisz mieć na względzie przeglądanie stron internetowych, a nie widok obrazu.

Oto kod, którego używam.

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 oto zrzut ekranu z wyjściem (jasno pokazuje wskaźniki przewijania czyli obraz nie mieści się w ramce Webview za) Output Screenshot

+0

Jeśli ktoś chce lepszej odpowiedzi w tym samym stylu co Ammar's: http://stackoverflow.com/a/4670989/1861181 – Morkrom

Odpowiedz

0

Spróbuj użyć zawartości HTML dla WebView, jak na poniższym kodzie

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

Aby ponownie rozmiar użycie obrazu CSS (kaskadowe arkusze stylów) stylizacja, bawić się z tych właściwości stylu w atrybucie style obrazu

maksymalna szerokość min szerokość, szerokość maksymalna wysokości, min wysokości & wysokość

+0

OK, ale gdzie w systemie iOS to działa? W jaki sposób jest wdrażany? – Morkrom

4

najpierw sprawdzić i ustawić ramy UIWebView w viewDidLoad: jak mieszka ..

webView.frame = self.view.frame; 

po użyciu tej metody Delegat i ustaw scalesPageToFit właściwość jak poniżej ..

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

Próbowałem tego, ale nadal ten sam problem występuje – iMemon

+0

@iMemon zobaczyć te odpowiedzi i spróbuj to również http://stackoverflow.com/questions/2350135/uiwebview-wont-zoom-even-after-setting-scalespagetofto-yes :) –

1

to Soluti na podstawie odpowiedzi od Ammara Hasana. Zamiast oryginału ...

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

... można to zrobić:

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

Teraz obraz jest skalowany do szerokości widoku strony internetowej, nawet gdy widok internetowej jest mniejsza niż połowa szerokości obrazu, która wydaje się być granicą, którą UIWebView narzuca inaczej. Obraz może wciąż być skalowany przez użytkownika, który chciałem. Możesz to zmienić, dodając minimum-scale i maximum-scale do metatagu widoku.