Я смог сделать это, добавив белые подпредставления вверху и внизу scrollView в WebView.Я контролирую содержимое WebView, поэтому знаю, что с белым все в порядке - это не сработает, если вы загружаете произвольный контент.
// _topCover and _bottomCover are ivar UIViews
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
// with cover views 300pt high, I couldn't scroll far enough to see the shadow,
// even in portrait on an iPad, which gives you the longest scroll distance
CGFloat coverage = 300;
_topCover = [[UIView alloc] initWithFrame:CGRectMake(0, -coverage, webView.bounds.size.width, coverage)];
_bottomCover = [[UIView alloc] initWithFrame:CGRectMake(0, webView.scrollView.contentSize.height, webView.bounds.size.width, coverage)];
_topCover.backgroundColor = [UIColor whiteColor];
_bottomCover.backgroundColor = [UIColor whiteColor];
// in case the webView is resized, e.g. by rotating the device
_topCover.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth;
_bottomCover.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
[webView.scrollView addSubview:_topCover];
[webView.scrollView addSubview:_bottomCover];
}
Я запускаю его после загрузки страницы, чтобы webView.scrollView.contentSize.height
даст мне правильную высоту.Я не уверен, как это будет работать, если ваши страницы динамически меняют высоту.Моя страница загружается только один раз;если ваша перезагружается, вы можете пропустить запуск alloc
/ init
на _topCover
и _bottomCover
после первого повышения эффективности.
Обновление: ЯЯ не уверен, что моего использования autoresizingMask
выше достаточно для поворота вида.Возможно, вам понадобится поместить это в UIViewController
, который содержит ваш UIWebView
, чтобы изменить размеры обложек после поворота:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
CGFloat coverage = 300;
_topCover.frame = CGRectMake(0, -coverage, self.webView.bounds.size.width, coverage);
_bottomCover.frame = CGRectMake(0, self.webView.scrollView.contentSize.height, self.webView.bounds.size.width, coverage);
}