iOS:隐藏 UIWebView 的某些部分

标签 ios objective-c uiwebview

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

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

如何隐藏 UIWebView 顶部和底部内容的某些部分?谢谢!

最佳答案

您可以通过执行 JavaScript 来隐藏页眉/页脚,该 JavaScript 通过 CSS 隐藏 DOM 元素,或者在文档加载后删除它们(在委托(delegate)方法中 - (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];

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

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

关于iOS:隐藏 UIWebView 的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20297364/

相关文章:

ios - 与模拟器相比,自定义 iOS InAppSettingsKit 在 iPhone 上给出不同的结果

ios - iDevice 中的哪个 plist 存储了 idevice 的语言?

ios - 通过 cocoa 绑定(bind)将数组与字典连接起来

ios - UIWebView 显示没有内容的黑屏

html - Swift - 在 UiWebView 中加载本地 Html

ios - 为什么我的 subview 没有显示在堆栈顶部?

iphone - 使滚动条在 UIScrollView 上始终可见?

iphone - shouldAutorotateToInterfaceOrientation 有问题

ios - 设置 text.view 框架和按钮框架之间的适当间隙

ios - 如何在 iOS 的 Web View 中实现 "find in page"?