Подтвердить что ты не робот

Добавление заголовка в WKWebView ScrollView

Кто-нибудь смог успешно добавить вид заголовка или нижнего колонтитула в WKWebView ScrollView?

В настоящее время я пытаюсь сделать это, используя описанный здесь метод для UIWebView Добавление заголовка в UIWebView, аналогичный Safari и статьям.

Когда этот метод используется в WKWebView, представление содержимого origin.y корректно изменено, но содержимое обрезается внизу.

Использование смещения содержимого прокрутки также невозможно, поскольку оно разбивает фиксированные позиционированные элементы CSS в веб-представлении.

4b9b3361

Ответ 1

Вот пример, который я думаю, как вы описываете. Он смещает веб-контент, устанавливая contentInset в scrollView и компенсируя рамку просмотра заголовка отрицательной суммой:

@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;
}

Ответ 2

В методе делегирования 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];

это сработало идеально для меня. Надеюсь, он решает вашу проблему.