Я был в состоянии сделать это путем добавления белых подвидов в верхней и нижней части 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);
}
Я хотел бы тоже это обнаружите, так как это приведет к хорошему отскоку в UIWebView ... –
Да, это очень раздражает, меня также интересует решение – MrCranky
возможного дубликата [Удалить UIWebView Shadow?] (http: /stackoverflow.com/questions/1074320/remove-uiwebview-sh adow) – JosephH