2014-10-08 4 views
3

Установить изображение произвольного размера в UIWebView (IOS)

Я хочу, чтобы соответствовать большому изображению в UIWebView с сохранением соотношения изображения такого же, как точки зрения изображения.

Как я могу это сделать?

Мой код выглядит следующим образом в Uiwebview. если изображение большое, то дисплей не очень хорош.

   CGFloat screenWidth = self.view.frame.size.width; 
       CGFloat screenHeight = self.view.frame.size.height; 

       NSString *htmlString = [NSString stringWithFormat:@"%@", @"<html><head><meta name='viewport' content='user-scalable=yes,width=device-width'></head><body bgcolor='000000'><img src='%@' width='%f' height='%f' style='max-width:200% max-height:200%'></body></html>"]; 
       imageHTML = [[NSString alloc] initWithFormat:htmlString, fileUrl, screenWidth, screenHeight]; 

     [Webview loadHTMLString:imageHTML baseURL:nil]; 
     [imageHTML release]; 
+0

Почему вы используете веб-просмотра, чтобы показать изображение? Почему бы не использовать 'UIImageView'? –

+0

, когда я использовал память UIImageView, использует больше. Проблема с памятью продолжается с устройства iPod4. – Sabareesh

+0

если изображение большое (2000 * 3000), то только я использую UIwebview. в противном случае я использую UIImageView. – Sabareesh

ответ

15

Я использовал ниже код и его хорошо работает.

NSString *imageHTML = [[NSString alloc] initWithFormat:@"%@%@%@", @"<!DOCTYPE html>" 
           "<html lang=\"ja\">" 
           "<head>" 
           "<meta charset=\"UTF-8\">" 
           "<style type=\"text/css\">" 
           "html{margin:0;padding:0;}" 
           "body {" 
           "margin: 0;" 
           "padding: 0;" 
           "color: #363636;" 
           "font-size: 90%;" 
           "line-height: 1.6;" 
           "background: black;" 
           "}" 
           "img{" 
           "position: absolute;" 
           "top: 0;" 
           "bottom: 0;" 
           "left: 0;" 
           "right: 0;" 
           "margin: auto;" 
           "max-width: 100%;" 
           "max-height: 100%;" 
           "}" 
           "</style>" 
           "</head>" 
           "<body id=\"page\">" 
           "<img src='",fileUrl,@"'/> </body></html>"]; 

       [wview_contents loadHTMLString:imageHTML baseURL:nil]; 
+0

как это будет написано в быстры? –

+0

Я нашел, что мне просто нужно было добавить img {max-width: 100%} в стиль, чтобы сделать эту работу –

+0

работает отлично. Я думаю, что это только верное решение, с которым я столкнулся до сих пор.Я попробовал много из них, чтобы соответствовать изображению в веб-представлении, но у каждого есть свои проблемы или недостатки. –

4

Установите страницу WebView масштабирования подходят:

[webView setScalesPageToFit:YES]; 

EDIT:

Здесь проверить эти две линии также

CGFloat screenWidth = self.view.frame.size.width; 
CGFloat screenHeight = self.view.frame.size.height; 

Если вы знаете, какой размер вы хотите они передают статические значения здесь, исправят вашу проблему.

например.

CGFloat screenWidth = 300; 
CGFloat screenHeight = 300; 
+0

Я использовал его, но не работал. wview_contents.scalesPageToFit = YES; wview_contents.autoresizesSubviews = YES; – Sabareesh

+0

Не могли бы вы опубликовать ScreenShot для этого – Kampai

+0

Я добавил скриншот .. – Sabareesh

3

Следующий фрагмент кода может помочь вам

NSString *fontString = @"<!DOCTYPE html><html>\ 
    <head>\ 
    <style>\ 
    img{"; 
     NSString *imageDimensionsStr = [NSString stringWithFormat:@"max-width: %fpx; max-height: %fpx;}",self.view.frame.size.width - 50.0f, self.view.frame.size.height/2]; 
     fontString =[fontString stringByAppendingString:imageDimensionsStr]; 
fontString = [fontString stringByAppendingString:@"</style></head><body>"]; 
    fontString = [[fontString stringByAppendingString:htmlString] stringByAppendingString:@"</body></html>"]; 
    [webView loadHTMLString:fontString baseURL:nil]; 

Приведенный выше код будет изменять ширину и высоту изображения в соответствии с видом измерения. Вы можете изменить в соответствии с вашим требованием.

+0

Это лучшее решение для меня, так как мне нужно отобразить некоторый текст HTML из RESTful API. Фактически, я использую «max-width: 100%» вместо «max-width: ... max-height». использование процента работает настолько хорошо, что даже поворот на пейзаж работает, как ожидалось. –

4

Чтобы загрузить изображение в Swift 3.0 из каталога документов приложения в UIWebView с его ожидаемым отношением -

if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first { 
 
      let path = dir.appendingPathComponent(imageName) 
 
      
 
      
 
      
 
     let fullHTML = "<!DOCTYPE html>" + 
 
      "<html lang=\"ja\">" + 
 
      "<head>" + 
 
      "<meta charset=\"UTF-8\">" + 
 
      "<style type=\"text/css\">" + 
 
      "html{margin:0;padding:0;}" + 
 
      "body {" + 
 
      "margin: 0;" + 
 
      "padding: 0;" + 
 
      "color: #363636;" + 
 
      "font-size: 90%;" + 
 
      "line-height: 1.6;" + 
 
      "background: black;" + 
 
      "}" + 
 
      "img{" + 
 
      "position: absolute;" + 
 
      "top: 0;" + 
 
      "bottom: 0;" + 
 
      "left: 0;" + 
 
      "right: 0;" + 
 
      "margin: auto;" + 
 
      "max-width: 100%;" + 
 
      "max-height: 100%;" + 
 
      "}" + 
 
      "</style>" + 
 
      "</head>" + 
 
      "<body id=\"page\">" + 
 
      "<img src='\(path)'/> </body></html>" 
 
      
 
      imgWbView.loadHTMLString(fullHTML, baseURL: nil) 
 
}

+0

Отличный ответ. Работает отлично. благодаря – rmvz3

Смежные вопросы