UIWebView上的透明UIToolBar

时间:2010-11-05 22:27:41

标签: iphone objective-c uiwebview uitoolbar overlap

我想在UIToolBar上拥有透明UIWebView,以便用户获得更广泛的视角和概述。

然而,当我这样做时,你看不到页面的底部。我想在底部设置一个偏移量,但这不可信,因为缩放级别可能会有所不同(并且每个像素的价值会更低)。

如何将webView滚动并停在UIToolBar的上边缘?

4 个答案:

答案 0 :(得分:4)

您必须设置contentInset和scrollIndicatorInsets。如果您没有设置scrollIndicatorInsets,滚动指示器将位于UIToolbar下方,看起来不正确。

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

答案 1 :(得分:3)

我通过在UIWebView的UIScrollView子视图中设置插入来修复它:

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

看起来很棒!

答案 2 :(得分:2)

我尝试了Emils解决方案,但它不适用于iOS7,因为它继承自UIWebViewScrollView。因此,将他的代码改编为以下内容:

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

答案 3 :(得分:0)

听起来你不希望UIToolbar与你的UIWebView重叠。相反,您希望设置其框架,以便UIWebView仅扩展到UIToolbar开始的位置。

如果您以编程方式设置这两个视图,只需将UIWebView框架的高度设置为其父级边界的大小 - UIToolbar框架的高度。如果您在InterfaceBuilder中执行此操作,只需拖动UIWebView的下边缘以调整其大小,使其停止在UIToolbar开始的位置,或在检查器中修改其框架。