2010-11-05 12 views
5

Quiero tener un UIToolBar transparente sobre un UIWebView, de modo que el usuario obtenga una perspectiva más amplia y visión general.Transparente UIToolBar sobre UIWebView

Sin embargo, cuando hago esto, no puede ver la parte inferior de la página. Pensé en establecer una compensación en la parte inferior, pero no se puede confiar en ella, ya que el nivel de zoom puede variar (y cada píxel valdrá menos).

¿Cómo puedo hacer que el webView se desplace y se detenga en el borde superior del UIToolBar?

Respuesta

2

Probé la solución Emils, pero no funciona para iOS7 ya que hereda de UIWebViewScrollView. Así, adaptado a su código a la siguiente:

for (id view in [self.webView subviews]){ 
    if ([view respondsToSelector:@selector(setContentInset:)]){ 
     [(UIScrollView *)view setContentInset:UIEdgeInsetsMake(0, 0, 44, 0)]; 
    } 
} 
0

Parece que no quiere que UIToolbar se superponga a su UIWebView. En su lugar, desea establecer sus marcos de modo que UIWebView solo se extienda hasta donde comienza la barra de archivos de UIT.

Si está configurando estas dos vistas mediante programación, simplemente configure la altura del marco de UIWebView para que sea del tamaño de los límites de sus elementos principales: el alto del marco de UIToolbar. Si está haciendo esto en InterfaceBuilder, simplemente arrastre el borde inferior de UIWebView para cambiar el tamaño de modo que se detenga donde comienza la barra de UITo modifique su marco en el inspector.

+0

El objetivo de una barra de herramientas transparente es mostrar cosas debajo de ella. Entonces no, no quiero que UIWebView se detenga justo encima de la barra de herramientas. – Emil

+0

Lo siento, entonces supongo que no entiendo lo que estás tratando de hacer. – Ryan

+0

¡Tipo de la Photos-app, solo que quiero que el borde inferior de la "imagen" se desplace sobre el borde de la barra de herramientas! :) – Emil

3

me fijo mediante el establecimiento de una inserción en el UIScrollView-subvista de la UIWebView:

for (id view in [webView subviews]){ 
    if ([view isMemberOfClass:[UIScrollView class]]){ 
     [(UIScrollView *)view setContentInset:UIEdgeInsetsMake(0, 0, 44, 0)]; 
    } 
} 

se ve y funciona muy bien!

4

Debe establecer el contentInset y los scrollIndicatorInsets. Si no configura el scrollIndicatorInsets, el indicador de desplazamiento irá debajo de su UIToolbar que no se ve bien.

float toolbarHeight = toolbar.frame.size.height; 

UIEdgeInsets insets = webView.scrollView.contentInset; 
insets.bottom = toolbarHeight; 
[webView.scrollView setContentInset:insets]; 

UIEdgeInsets indicatorInsets = webView.scrollView.scrollIndicatorInsets; 
indicatorInsets.bottom = toolbarHeight; 
[webView.scrollView setScrollIndicatorInsets:indicatorInsets]; 
Cuestiones relacionadas