2010-11-05 25 views
5

Je veux avoir un UIToolBar transparent sur un UIWebView, afin que l'utilisateur obtienne une perspective plus large et une vue d'ensemble.Transparent UIToolBar sur UIWebView

Cependant, lorsque je fais cela, vous ne pouvez pas voir le bas de la page. J'ai pensé à définir un décalage en bas, mais cela ne peut pas être fiable, car le niveau de zoom peut varier (et chaque pixel vaudra moins).

Comment faire pour que le webView défile et s'arrête sur le bord supérieur du UIToolBar?

Répondre

2

J'ai essayé la solution Emils, mais cela ne fonctionne pas pour iOS7 car il hérite d'un UIWebViewScrollView. Alors, adapté son code à la suivante:

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

Il semble que vous ne souhaitiez pas que l'UIToolbar chevauche votre UIWebView. Au lieu de cela, vous voulez définir leurs cadres de telle sorte que l'UIWebView ne s'étende qu'à l'endroit où commence l'UIToolbar.

Si vous configurez ces deux vues par programme, définissez simplement la hauteur de l'image de UIWebView comme étant la taille des limites de ses parents - la hauteur de l'image de l'UIToolbar. Si vous faites cela dans InterfaceBuilder, faites simplement glisser le bord inférieur de l'UIWebView pour le redimensionner afin qu'il s'arrête là où l'UIToolbar commence ou modifiez son cadre dans l'inspecteur.

+0

Le point entier d'un toolBar transparent est de montrer des choses en dessous. Donc non, je ne veux pas que l'UIWebView s'arrête juste au-dessus de la barre d'outils. – Emil

+0

Désolé, je suppose que je ne comprends pas ce que vous essayez de faire. – Ryan

+0

Sort de l'application Photos, juste que je veux que le bord inférieur de l '"image" soit en mesure de faire défiler le bord de la barre d'outils! :) – Emil

3

Je l'ai fixé en définissant un encart dans le UIScrollView-sous-vue du UIWebView:

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

regards et fonctionne très bien!

4

Vous devez définir la contentInset et les scrollIndicatorInsets. Si vous ne définissez pas les scrollIndicatorInsets, l'indicateur de défilement passera sous votre UIToolbar qui ne semble pas correct.

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