将标题视图添加到 WKWebView ScrollView

Posted

技术标签:

【中文标题】将标题视图添加到 WKWebView ScrollView【英文标题】:Adding header view to WKWebView ScrollView 【发布时间】:2015-08-12 09:55:35 【问题描述】:

有没有人成功地将页眉或页脚视图添加到WKWebView ScrollView

我目前正在尝试使用此处为UIWebView Adding a header view to a UIWebView similar to Safari and Articles 描述的方法来执行此操作。

当在WKWebView 中使用此方法时,内容视图origin.y 被正确更改,但内容在底部被截断。

使用滚动视图内容偏移也是不可能的,因为它会破坏 Web 视图中固定定位的 CSS 元素。

【问题讨论】:

嗨,我遇到了同样的问题。现有的答案都是关于UIWebView 并且没有WKWebview 的解决方案。所以我决定悬赏这个问题。 你能提供任何满足你需要的代码或截图吗? 您可以在 webview 加载后将其作为 HTLM 代码插入 我有一个可行的实现,只需向 webview 的 scrollView 添加一个视图,您是否尝试过,但它不起作用? 【参考方案1】:

在 webView 的委托方法中

- (void)webViewDidFinishLoad:(UIWebView *)webView

添加以下代码库,

mainWebViewObj.scrollView.contentInset = UIEdgeInsetsMake(headerView.frame.size.height,0.0,headerView.frame.size.height,0.0);
mainWebViewObj.scrollView.backgroundColor = [UIColor whiteColor];

if(![headerView superview])

    [webView.scrollView addSubview:headerView];
    [webView.scrollView bringSubviewToFront:headerView];

[mainWebViewObj.scrollView setContentOffset:
 CGPointMake(0, -mainWebViewObj.scrollView.contentInset.top) animated:NO];

这对我来说很完美。希望它能解决你的问题。

【讨论】:

【参考方案2】:

这是我认为与您描述的一样的示例。它通过在scrollView 上设置contentInset 并通过将标题视图框架偏移负数来偏移Web 内容:

@implementation ViewController

    WKWebView*  _webView;

    UIView*     _headerView;


- (void)viewDidLoad

    [super viewDidLoad];

    _webView = [[WKWebView alloc] initWithFrame: self.view.bounds];
    [self.view addSubview: _webView];

    [_webView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: @"http://www.***.com"]]];


    [_webView.scrollView setContentInset: UIEdgeInsetsMake(100, 0, 0, 0)];

    _headerView = [[UIView alloc] initWithFrame: CGRectMake(0, -100, 375, 100)];
    _headerView.backgroundColor = [UIColor redColor];
    [_webView.scrollView addSubview: _headerView];


- (void) viewDidLayoutSubviews

    [super viewDidLayoutSubviews];

    _webView.frame = self.view.bounds;

    CGRect f = _headerView.frame;
    f.size.width = _webView.bounds.size.width;
    _headerView.frame = f;

【讨论】:

不幸的是,这遇到了问题中提到的相同问题,即使用内容偏移量会破坏 Web 视图中固定定位的 CSS 元素。

以上是关于将标题视图添加到 WKWebView ScrollView的主要内容,如果未能解决你的问题,请参考以下文章

WKWebView 添加为子视图

无法显示添加到 WKWebView 的子视图

WKWebView 添加到子视图,并将大小设置为等于父视图?

隐藏WKWebView避免VoiceOver识别ios

ios - 将子视图添加到 JS 对话框下方的 WKWebView

将具有多个子视图的视图截图为 wkwebview