【问题标题】:iOS: Hide Certain Portion Of UIWebViewiOS:隐藏 UIWebView 的某些部分
【发布时间】:2013-11-30 06:32:25
【问题描述】:

在测试 iOS 应用程序中,我添加了一个 UIWebView 来显示网页。我想要的不是显示此网页的页眉和页脚。页眉和页脚让我们说几乎 100 像素。有什么办法可以将这部分隐藏在 UIWebView 中?

我已经尝试过在我的 StoryBoard 中移动 UIWebView,使 100 像素位于导航栏后面。这使得 UIWebView 的内容看起来正是我想要的,但如果用户滚动并按住以及弹跳时,用户仍然可以看到它。所以这不是一个好的解决方案。我做的第二件事是禁用反弹效果,但这会使整个事情变得非常固定,这也不是一个好的解决方案。

如何让它隐藏 UIWebView 顶部和底部的特定部分内容?谢谢!

【问题讨论】:

    标签: ios objective-c uiwebview


    【解决方案1】:

    您可以通过执行 JavaScript 来隐藏页眉/页脚,该 JavaScript 通过 CSS 隐藏 DOM 元素,或者在加载文档后将其删除(在委托方法 - (void)webViewDidFinishLoad:(UIWebView *)webView 中)。

    说要去掉header元素:

    NSString *js = @"var headerElement = document.getElementsByTagName('header')[0]; if(e){ e.remove(); }";
    [webView stringByEvaluatingJavaScriptFromString: js];
    

    或者插入 CSS 来隐藏页眉/页脚:

    NSString *js = @"var styleTag = document.createElement('style'); styleTag.innerText = "header, footer {display: none;}"; document.body.appendChild(styleTag);";
    [webView stringByEvaluatingJavaScriptFromString: js];
    

    但是,以上两种方式在网页被解析并显示给用户后才会生效,所以用户可能会注意到页脚和页眉显示一小段时间。

    如果你确实需要防止用户看到页眉/页脚的闪烁,你应该考虑提前加载html内容并在内容中插入CSS,然后通过调用UIWebView方法– loadHTMLString:baseURL:显示网页。

    【讨论】:

      【解决方案2】:

      使用 Java Script 你可以实现它。限制 webview 的滚动内容偏移,使其到达某个点时不会上升。

      或者这对您也有帮助: iOS : detect UIWebView reaching the top or bottom

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 2019-04-28
        • 2020-03-02
        相关资源
        最近更新 更多