Добавление заголовка в WKWebView ScrollView
Кто-нибудь смог успешно добавить вид заголовка или нижнего колонтитула в WKWebView
ScrollView
?
В настоящее время я пытаюсь сделать это, используя описанный здесь метод для UIWebView
Добавление заголовка в UIWebView, аналогичный Safari и статьям.
Когда этот метод используется в WKWebView
, представление содержимого origin.y
корректно изменено, но содержимое обрезается внизу.
Использование смещения содержимого прокрутки также невозможно, поскольку оно разбивает фиксированные позиционированные элементы CSS в веб-представлении.
Ответы
Ответ 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];
это сработало идеально для меня. Надеюсь, он решает вашу проблему.