2010-11-05 5 views
5

Ich möchte eine transparente UIToolBar über eine UIWebView haben, so dass der Benutzer eine breitere Perspektive und Übersicht bekommt.Transparent UIToolBar über UIWebView

Allerdings, wenn ich dies tue, können Sie nicht den unteren Rand der Seite sehen. Ich habe überlegt, einen Offset am unteren Rand zu setzen, aber das kann nicht vertraut werden, da die Zoomstufe variieren kann (und jedes Pixel wird weniger wert sein).

Wie kann ich die webView scrollen und am oberen Rand der UIToolBar stoppen?

Antwort

2

Ich habe Emils Lösung ausprobiert, aber es funktioniert nicht für iOS7, da es dort von einem UIWebViewScrollView erbt. Also, angepasst sein Code der folgenden:

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

Es klingt, als ob die UIToolbar nicht mit Ihrem UIWebView überlappen soll. Stattdessen möchten Sie ihre Frames so einstellen, dass das UIWebView nur dort endet, wo das UIToolbar beginnt.

Wenn Sie diese beiden Ansichten programmgesteuert einrichten, legen Sie einfach die Höhe des UIWebView-Rahmens auf die Größe der Grenzen des übergeordneten Elements fest - die Höhe des Rahmens der UIToolbar. Wenn Sie dies in InterfaceBuilder tun, ziehen Sie einfach den unteren Rand des UIWebView, um die Größe zu ändern, damit es an der Stelle aufhört, an der das UIToolbar beginnt, oder Sie ändern seinen Frame im Inspector.

+0

Der springende Punkt einer transparenten ToolBar ist, Dinge darunter zu zeigen. Also nein, ich möchte nicht, dass das UIWebView direkt über der ToolBar anhält. – Emil

+0

Sorry, dann verstehe ich nicht, was du versuchst zu tun. – Ryan

+0

Sortierung der Photos-App, nur dass die untere Kante des "Bildes" über den Rand der Werkzeugleiste scrollen soll! :) – Emil

3

ich es fest durch einen Einsatz in der UIScrollView-Subview der UIWebView Einstellung:

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

Sieht aus und funktioniert super!

4

Sie die contentInset und die scrollIndicatorInsets einstellen müssen. Wenn Sie die scrollIndicatorInsets nicht setzen, wird der Scroll-Indikator unter Ihre UIToolbar gehen, die nicht richtig aussieht.

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