将标题视图添加到WKWebView ScrollView

时间:2015-08-12 09:55:35

标签: ios uiwebview wkwebview

是否有人设法成功向WKWebView ScrollView添加页眉或页脚视图?

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

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

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

2 个答案:

答案 0 :(得分:0)

这是我认为你所描述的一个例子。它通过在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; } 并将标题视图框偏移负数来抵消网络内容:

int yearBase = 1993;

int year = yearBase + (int) ((bytes[4] & 0xF0) >> 4) | ((bytes[3] & 0xE0) >> 1);
int month = (int) (bytes[4] & 0x0F);
int day = (int) (bytes[3] & 0x1F);
int hour = (int) ((bytes[2] & 0xF8) >> 3);
int min = (int) (((bytes[2] & 0x03) << 3) | ((bytes[1] & 0xE0) >> 5));
int sec = (int) ((bytes[1] & 0x1F) << 1) | ((bytes[0] & 0x80) >> 7);
int hundreths = (int) (bytes[0] & 0x7F);

答案 1 :(得分:0)

在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];

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