UIWebView 上的透明 UIToolBar

Posted

技术标签:

【中文标题】UIWebView 上的透明 UIToolBar【英文标题】:Transparent UIToolBar over UIWebView 【发布时间】:2010-11-05 22:27:41 【问题描述】:

我希望有一个透明的UIToolBar 而不是UIWebView,以便用户获得更广阔的视野和概览。

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

如何使webView 滚动并停在UIToolBar 的顶部边缘?

【问题讨论】:

【参考方案1】:

您必须设置 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];

【讨论】:

【参考方案2】:

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

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

外观和效果都很棒!

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

透明工具栏的全部意义在于显示它下面的东西。所以不,我不希望 UIWebView 停在工具栏的正上方。 对不起,我想我不明白你在做什么。 照片应用程序的排序,只是我希望“图像”的底部边缘能够滚动到工具栏的边缘! :) 感谢您的努力!

以上是关于UIWebView 上的透明 UIToolBar的主要内容,如果未能解决你的问题,请参考以下文章

UIWebView ios8中的透明背景

iOS:如何使 UIWebView 50% 透明?

UIWebView半透明设置

UIVisualEffects、UIWebView 透明背景

UIWebView背景设置为“清除颜色”,但它不透明

Webview背景设置透明(ios android)