ios - superposicion - superposición de pantalla samsung j7
¿Cómo puedo cambiar el color de fondo de UIWebView después de deslizar hacia abajo UIWebView para corregir el problema de superposición de la barra de estado iOS7? (6)
Agregue las siguientes definiciones de 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;
}
Agregue una detección de agente de usuario basada en JavaScript a la inicialización de su aplicación:
if (navigator.userAgent.match(/(iPad.*|iPhone.*|iPod.*);.*CPU.*OS 7_/d/i)) {
$("body").addClass("ios7");
}
Estoy escribiendo una aplicación Phonegap 3.0+.
Existe un problema con la barra de estado que se superpone a las vistas en iOS7, que el usuario Ludwig Kristoffersson proporcionó una respuesta operativa aquí.
Ahora que tengo UIWebView con un margen superior de 20px, ¿cómo puedo cambiar el color de fondo de UIWebView? Necesito que el área detrás de la barra de estado tenga el mismo color de fondo que la barra de herramientas "personas".
Casi no tengo experiencia en Objective C, y he estado buscando a través de posibles preguntas de SO para encontrar una solución de trabajo, pero sin éxito.
Color de fondo UIWebView
El fondo UIWebView se establece en Borrar color, pero no es transparente
A continuación está el código que he intentado 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 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];
}
Eso todavía parece darme un fondo blanco detrás de la barra de estado, en lugar de gris.
El resultado que estoy esperando es así:
Cambie la propiedad Opaco a NO y marque de esta manera:
self.webView.backgroundColor = [UIColor grayColor];
self.webView.opaque=NO;
esta trabajando bien para mi.
Como alternativa, establezca un margen de 20 píxeles en el cuerpo del HTML dentro de su UIWebView, y luego el color de fondo establecido en su CSS llegará hasta la cima.
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 necesitará el complemento del dispositivo agregado para que esto funcione.
Cordova 3.5 establece el color de fondo en MainViewController.m ''s (void)webViewDidFinishLoad:(UIWebView*)theWebView
:
theWebView.backgroundColor = [UIColor blackColor];
Cambiar o comentar esa línea me permitió cambiar el color de la pantalla de iOS detrás de la vista web.
Gracias a bar54 por describir esta solución.
Entonces me di cuenta de que el código empuja a UIWebView hacia 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 cambié el color de fondo haciendo lo siguiente:
1. Vaya a MainViewController.xib:
2. Seleccione la vista principal:
3. Mostrar el inspector de atributos y cambiar el color. Hecho.
Obvio ahora que lo pienso, pero espero que esto ayude a alguien en el futuro.
Esto funciona para Cordova 3 y Cordova 2.9
Entonces, después de configurar el color de fondo de la aplicación a través de CSS, como este:
body{
background-color: #000;
}
Vaya a CordovaXlib.xcode.proj y busque su carpeta "Clases" MainViewController.m línea # 142
Descomenta el método o función "webViewDidStartLoad" y simplemente agrega
self.webView.opaque=NO;
Entonces tendrás algo como esto:
- (void) webViewDidStartLoad:(UIWebView*)theWebView
{
self.webView.opaque=NO;
return [super webViewDidStartLoad:theWebView];
}