webkitview tutorial apple objective-c ios7 uiwebview ios8

objective-c - tutorial - wkwebview apple



Espacio en blanco aƱadido en UIWebview-eliminaciĆ³n de espacio en blanco UIWebView en iOS7 y iOS8 (6)

Estoy cargando archivos html locales, ya que iOS7 se agrega espacio en blanco en la parte superior en el UIWebView. (No puedo publicar una imagen, ya que no tengo suficientes puntos). La imagen se puede ver aquí: instantánea del simulador de iPhone, uiwebview rodeado de negro marco, el contenido html es gris, pero hay blanco agregado encima

He intentado ajustar el zoom usando

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

También intenté eliminar el espaciado blanco:

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

Todavía no hay suerte. En el navegador Chrome de escritorio no hay espacios en blanco. Los archivos html son archivos de Google Swiffy, que contienen html y JSON.

editar: imagen actualizada


Este problema solo afecta a UIWebView si es la primera subvista de la vista principal. Una forma alternativa de evitar este problema es agregar otra vista vacía no visible a la vista principal como primera vista. En Interface Builder, agregue una subvista de tamaño cero y use el comando de menú Editor-> Organizar-> Enviar al fondo.

Si no está utilizando Interface Builder, sino que está subclasificando UIWebView , puede hacerlo creando una variable de instancia de UIView llamada scrollFixView y anulando los siguientes métodos:

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


Pruebe self.automaticallyAdjustsScrollViewInsets = NO; en ViewDidLoad.

ios 7 agrega 64px automáticamente para la vista de desplazamiento. (barra de estado y barra de navegación)


Resolví este problema simplemente estableciendo una restricción en WebView, estableciendo el espacio superior entre él y View top en 0, haciendo que NavBar se superponga al espacio en blanco.


Tuve el mismo problema, así que probé algunas cosas :-)

Esto funcionó para mí, pero corrígeme 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); } }

Entonces, básicamente, necesitas:

1) Agregue el método de delegado UIWebView - webViewDidFinishLoad: 2) Luego configuro una instrucción if para verificar si la opción translúcida está activa.

El último solo debe hacer, por supuesto, si le da al usuario la opción dentro de su aplicación. El número que _webView.frame.origin.y después de _webView.frame.origin.y es solo para mi aplicación. Puede diferir para ti.


Una alternativa al método de Jeff Kranenburg es subclasificar y anular el método UIScrollViewDelegate las subclases de UIWebView scrollViewDidScroll: Esto solo es apropiado si el desplazamiento está desactivado para su 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; } }


Ya lo tengo .

aquí mi código de lógica, cuando la aplicación abra el sitio web debe obtener el tamaño de su vista web y luego configurarlo en 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);

Espero que tomes mi código y mi respuesta a :) funciona en cualquier dispositivo, incluso pestañas también :)