【问题标题】:Adding header view to WKWebView ScrollView将标题视图添加到 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 添加一个视图,您是否尝试过,但它不起作用?

标签: ios uiwebview wkwebview


【解决方案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.stackoverflow.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 元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多