Estoy escribiendo una Phonegap 3.0+ app.

Hay un problema con la barra de estado de la superposición de puntos de vista en iOS7 que el usuario Ludwig Kristoffersson siempre un trabajo respuesta aquí

Ahora que tengo UIWebView con un 20px margen superior, ¿cómo puedo cambiar el UIWebView color de fondo? Necesito la zona de detrás de la barra de estado para que sea el mismo color de fondo como el «pueblo» de la barra de herramientas.

¿Cómo puedo cambiar el UIWebView color de fondo después de deslizarse por UIWebView para solucionar el iOS7 barra de estado de superposición problema?

Casi no tengo experiencia en Objective C, y han estado buscando a través de posible PARA preguntas para encontrar una solución de trabajo, pero sin éxito.

UIWebView color de fondo

UIWebView fondo es de Color Claro, pero no es transparente


A continuación se muestra el código que he probado hasta ahora:

- (void)viewWillAppear:(BOOL)animated {
    //Lower screen 20px on ios 7
    if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
        CGRect viewBounds = [self.webView bounds];
        viewBounds.origin.y = 20;
        viewBounds.size.height = viewBounds.size.height - 20;
        self.webView.frame = viewBounds;
        [self.webView setOpaque:YES];

        //neither of these seem to work when uncommented:
  //   [self.webView setBackgroundColor:[UIColor grayColor]];
  //   self.webView.backgroundColor=[UIColor grayColor];
        }
    [super viewWillAppear:animated];
    }


ACTUALIZACIÓN de 1

- (void)viewWillAppear:(BOOL)animated
{
//Lower screen 20px on ios 7
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    CGRect viewBounds = [self.webView bounds];
    viewBounds.origin.y = 20;
    viewBounds.size.height = viewBounds.size.height - 20;
    self.webView.frame = viewBounds;

    self.webView.backgroundColor = [UIColor grayColor];
    self.webView.opaque=NO;
}
[super viewWillAppear:animated];
}

Que parece que todavía me dan un fondo blanco detrás de la barra de estado, en lugar de gris.

El resultado que estoy esperando es como este:
¿Cómo puedo cambiar el UIWebView color de fondo después de deslizarse por UIWebView para solucionar el iOS7 barra de estado de superposición problema?

InformationsquelleAutor Paul | 2013-10-17

6 Comentarios

  1. 14

    Cambiar el Opaco de la propiedad a NO y comprobar como esta :

    self.webView.backgroundColor = [UIColor grayColor];
    self.webView.opaque=NO;

    su trabajo bien para mí.

    • por favor, ver mi «Update 1» por encima de
    • cambiar el color y la verificación/
    • Respuesta actualizada cambiar el color y comprobar una vez.
    • extraño… he cambiado a grayColor y greenColor sólo para probar. He probado a limpiar el proyecto varias veces y en mi iPad, el iPhone y el simulador, pero sólo se puede conseguir el fondo a blanco. Podría ser algo Phonegap es la configuración más tarde en algún lugar?
    • Se va a añadir la web de la vista mediante programación?
    • No estoy seguro. El proyecto de Xcode es sólo un fuera de la caja Phonegap 3.0 build
    • ¿Estás seguro de que el color de fondo cambia a gris? Debido a que su código se asemeja a la de color claro. Y asegúrese de que el código sólo funcionará en IOS 7 como por su condición.
    • Lo siento, mi «Update 1» tiene un error tipográfico. Probé con la siguiente cambiado: self.webView.backgroundColor = [UIColor grayColor]; self.webView.opaque=NO; y self.webView.backgroundColor = [UIColor greenColor]; self.webView.opaque=NO; Mi iPhone y el iPad están ejecutando iOS7.0.2 y puedo ver el cambio del margen que confirma estoy llegando a la sección de código. Nada me puede estar faltando?
    • Mientras se carga la URL de tu a llegar el tiempo de fondo todavía está a la derecha? O usted necesita para cambiar el fondo de la vista de la web una vez que el contenido se carga?
    • Probablemente sería correcto si el WebView fondo era siempre de color gris
    • Este código se establece el color de fondo de la web a la vista mientras se carga la URL. Una vez que el contenido se carga en la vista web, web de fondo de la vista cambiará según el contenido de una URL.
    • pero el webview ha sido empujado hacia abajo por 20px si >=ios7. Supongo que la pregunta es, donde puedo configurar el color de que 20px margen superior que la que existe ahora – pensé que la zona era webview, pero quizás es la que contiene punto de vista. De nuevo – mi Objetivo C experiencia es muy mínima, por lo que no estoy seguro
    • Gracias Ganapathy, tu último comentario conducir a mí para encontrar la respuesta. Necesitaba cambiar el color de fondo de la vista principal, no la UIWebView sí mismo. Ugh.. tonto error
    • Ok.Vaya por delante…………..
    • Pregunta confusa de mi parte, gracias por la ayuda aunque

  2. 10

    Entonces me di cuenta de que el código empuja el UIWebView abajo 20px. Lo que significa que el espacio en blanco, por definición, no puede ser UIWebView. El espacio en blanco es la vista principal que he cambiado el color de fondo haciendo lo siguiente:

    1. Ir a MainViewController.xib:

    ¿Cómo puedo cambiar el UIWebView color de fondo después de deslizarse por UIWebView para solucionar el iOS7 barra de estado de superposición problema?

    2. Seleccione la vista principal:

    ¿Cómo puedo cambiar el UIWebView color de fondo después de deslizarse por UIWebView para solucionar el iOS7 barra de estado de superposición problema?

    3. Mostrar los atributos del inspector y cambiar el color. Hecho.
    ¿Cómo puedo cambiar el UIWebView color de fondo después de deslizarse por UIWebView para solucionar el iOS7 barra de estado de superposición problema?

    Obvio ahora que lo pienso, pero espero que esto ayude a alguien en el futuro.

  3. 1

    Este es el trabajo para Córdoba 3 y Córdoba 2.9

    Así que después de configurar la aplicación del color de fondo a través de CSS como este:

     body{
       background-color: #000;
     }

    Ir a su CordovaXlib.xcode.proj y busque su «Clases» de la carpeta
    MainViewController.m
    la línea#142

    Quite el comentario de la «webViewDidStartLoad» método o función y sólo tiene que añadir

      self.webView.opaque=NO;

    Así tendrás algo como esto:

     - (void) webViewDidStartLoad:(UIWebView*)theWebView
     {
        self.webView.opaque=NO;
        return [super webViewDidStartLoad:theWebView];
     }
  4. 1

    Córdoba 3.5 establece el color de fondo en MainViewController.m‘s (void)webViewDidFinishLoad:(UIWebView*)theWebView:

    theWebView.backgroundColor = [UIColor blackColor];

    Cambiar o comentando que la línea de éxito que me permitió cambiar el color de la pantalla iOS detrás de la webview.

    Gracias a bar54 para la descripción de esta solución.

  5. 0

    Alternativamente, establecer un 20px margen en el cuerpo del HTML en el interior de su UIWebView, y, a continuación, el color de fondo establecido en el CSS va a ir todo el camino hasta la parte superior.

    function onDeviceReady() {
        if (parseFloat(window.device.version) === 7.0) {
              document.body.style.marginTop = "20px";
        }
    }
    
    document.addEventListener('deviceready', onDeviceReady, false);

    Tenga en cuenta que su aplicación será necesario que el dispositivo plugin añadido para que esto funcione.

    • Gracias Sam. Que es lo que yo estaba usando originalmente. La naturaleza de algunas de mis opiniones (desplazable, con los textareas que también son desplazables), significa que la extra en el cuerpo margen a veces se deslizan hacia arriba. Traté de configuración de overflow-y a escondidas, pero todavía no podía conseguir alrededor de él. Apreciar la entrada a pesar de que.
  6. 0

    Agregar las siguientes definiciones CSS:

    #ios7statusbar {
      width:100%;
      height:20px;
      background-color:white;
      position:fixed;
      z-index:10000;
    }
    .ios7 .ui-page, .ios7 .ui-header, .ios7 .ui-pane {
      margin-top: 20px;
    }

    Agregar un JavaScript agente de usuario basada en la detección de su inicialización de la aplicación:

    if (navigator.userAgent.match(/(iPad.*|iPhone.*|iPod.*);.*CPU.*OS 7_\d/i)) {
      $("body").addClass("ios7");
    }

Dejar respuesta

Please enter your comment!
Please enter your name here