Im carga de archivos html locales, desde iOS7 no se añade un espacio en blanco en la parte superior de la UIWebView.(No puedo publicar una imagen como no tengo suficientes puntos.)
la imagen se puede ver aquí – snap shot desde el iPhone simulator, uiwebview rodeada por un marco negro, el contenido html es gris, pero hay blanco añadido por encima de ella

He tratado de ajustar el zoom con

[webView stringByEvaluatingJavaScriptFromString:@"document. body.style.zoom = 5.0;"];
webView.scalesPageToFit = NO;

También trató de quitar el espacio en blanco:

 NSString *padding = @"document.body.style.margin='0';document.body.style.padding = '0'";
[webView stringByEvaluatingJavaScriptFromString:padding];

aún sin suerte. En el escritorio del navegador chrome no hay ningún espacio en blanco. Los archivos html son Google Swiffy archivos que contienen código html y JSON.

edición: Imagen actualizada

  • Lo sentimos, de alguna manera, no veo espacio allí. Podrías subir una simple captura de pantalla?
  • lo siento, no tenemos enuf rep puntos! El html tiene un fondo gris, el html está alojado dentro de un marco, el blanco sobre el gris es el espacio, es una foto instantánea del iPhone simulator
  • Pero se podría enviar la captura de pantalla completa a imageshack también, al igual que la otra imagen (incluso desde el simulador con las fronteras).
  • imagen actualizada está por encima de
  • ¿Alguna vez has averiguar esto? Tengo el mismo problema. iOS6 estaba bien, pero iOS7 añade un montón de espacio en blanco por encima de ella. He probado mediante el ajuste de margen, relleno a cero, el color de fondo rojo, y el color de fondo de uiwebview a azul. No es acerca de 60px de color azul. Se parece a la altura de la misma es el mismo que el de la barra de navegación, me pregunto si esta es una nueva característica de tener la translúcido de la barra de navegación con la uiwebview debajo de ella.
  • la solución a continuación ayudado. Usted podría tratar de apagar el auto-diseño, pero esto conduce a todos los otros problemas. Intente poniendo el webview en lugar de utilizar el diseño automático, esto puede ayudar a

InformationsquelleAutor DevC | 2013-09-22

6 Comentarios

  1. 142

    Intentar auto.automaticallyAdjustsScrollViewInsets = NO; en ViewDidLoad.

    de ios 7 agregar 64px, automáticamente, desplácese a la vista. (barra de estado y barra de navegación)

    • Agradable y simple, y funcionó a la perfección!! Gracias
    • Para más detalles sobre esto, vea developer.apple.com/library/ios/documentation/userexperience/…
    • iOS 7, por lo que se debe comprobar antes de su uso, como si ([auto respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewinsets:)])
    • Me pregunto cuál es la lógica de la adición de la barra en el primer lugar.
    • funciona muy bien, pero con Swift debe ser el valor booleano false: auto.automaticallyAdjustsScrollViewInsets = false
    • super grandes obras u salvó mi día +1

  2. 5

    Este problema sólo afecta a la UIWebView si es la primera subvista de la vista principal. Una forma alternativa para evitar este problema es agregar otra no visible de vista vacía a los padres a la vista como la primera vista. En el Interface Builder agregar un tamaño cero subvista y utilizar el Editor->Organizar->Enviar al fondo comando de menú.

    Si no estás usando el Interface Builder, sino que son subclases de la UIWebView, entonces se puede hacer mediante la creación de un UIView variable de instancia llamada scrollFixView y principal de los métodos siguientes:

    - (void)didMoveToSuperview
    {
      [super didMoveToSuperview];
    
      if ([self superview].subviews.firstObject == self) {
        _scrollFixView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
        _scrollFixView.hidden = YES;
        [[self superview] insertSubview:_scrollFixView belowSubview:self];
      }
    }
    
    - (void)removeFromSuperview
    {
      if (_scrollFixView) {
        [_scrollFixView removeFromSuperview];
        _scrollFixView = nil;
      }
    
      [super removeFromSuperview];
    }
    • esa es LA explicación tnks de Apple para que, estoy muy de apreciar esta característica
  3. 3

    Tuve el mismo problema, así que he intentado un par de cosas:-)

    Esto funcionó para mí, pero me corrija por favor si hay una mejor manera.

    -(void)webViewDidFinishLoad:(UIWebView *)webView
     {
       if(self.navigationController.navigationBar.translucent == YES)
       {
    
        _webView.scrollView.contentOffset = CGPointMake(_webView.frame.origin.x, _webView.frame.origin.y - 54);
    
       }
     }

    Así que, básicamente, usted necesita :

    1) Agregar el UIWebView método de delegado – webViewDidFinishLoad:
    2) Luego me la instalación de una instrucción if para comprobar si la translúcido opción está activa.

    La última que sólo necesita hacer, por supuesto, si usted le da al usuario la opción dentro de la aplicación.
    El número después de la _webView.frame.origin.y es solo para mi aplicación. Puede ser diferente para usted.

    • Gracias, he intentado la solución, y funcionó también, sin embargo @Yiding es más rápido y al punto, usted debe tratar de usted mismo 🙂
    • dulce gracias por eso:-)
    • Yiding la solución es apropiada si el código de los controles de la UIViewController, pero en los casos donde no, como con una biblioteca, entonces esta es una alternativa.
  4. 1

    He resuelto este problema por que simplemente la creación de una restricción en el WebView, ajuste el espacio entre ella y la Vista superior a 0, causando la barra de navegación a la superposición de los espacios en blanco.

  5. 0

    Una alternativa a Jeff Kranenburg del método es la subclase y anular el UIWebView subclases » UIScrollViewDelegate método scrollViewDidScroll:. Esto sólo es apropiada si el desplazamiento está desactivada para la subclase.

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
      if ([[self superclass] instancesRespondToSelector:_cmd]) {
        [super scrollViewDidScroll:scrollView];
      }
    
      [self fixUpScrollViewContentOffset];
    }
    
    - (void)fixUpScrollViewContentOffset
    {
      if (!CGPointEqualToPoint(self.scrollView.contentOffset, CGPointZero)) {
        self.scrollView.contentOffset = CGPointZero;
      }
    }
  6. 0

    Ya la tengo .

    aquí mi código de lógica, Cuando la aplicación se abre el sitio web que usted debe obtener el tamaño de su webview, a continuación, a la altura

    aquí mi código

         ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) webpage.getLayoutParams();
                p.height = webpage.getHeight();
    //check if how long you need to set your height for webpage then set it :)
                Log.e(" webpage.getHeight()", String.valueOf(webpage.getHeight()));
                webpage.setLayoutParams(p);

    La esperanza de que usted va a tomar mi código y mi respuesta 🙂 funciona en todos los dispositivos, incluso las pestañas demasiado 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here