iOS:隐藏UIWebView的某些部分

时间:2013-11-30 06:32:25

标签: ios objective-c uiwebview

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

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

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

2 个答案:

答案 0 :(得分:1)

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

说删除标题元素:

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

但是,在解析网页并向用户显示之后,上述两种方法会生效,因此用户可能会注意到页脚和标题会显示一小段时间。

如果你真的需要阻止用户看到页眉/页脚的flash,你应该考虑在高级加载html内容并将CSS插入到内容中,然后通过调用UIWebView方法– loadHTMLString:baseURL:来显示网页。

答案 1 :(得分:0)

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

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