udało mi się to zrobić dodając białe subviews na górze i na dole Webview za Scrollview. Kontroluję zawartość WebView, więc wiem, że biały jest OK - to nie zadziała, jeśli ładujesz dowolną zawartość.
// _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];
}
go uruchomić to po załadowaniu strony tak, że webView.scrollView.contentSize.height
da mi prawidłową wysokość. Nie wiem, jak to będzie działać, jeśli strony zmieniają dynamicznie wysokość. Moja strona ładuje się tylko raz; Jeśli twoja jest przeładowaniem, po raz pierwszy dla skuteczności będziesz pomijał uruchamianie alloc
/init
na _topCover
i _bottomCover
.
Aktualizacja: nie jestem pewien, że moje użycie autoresizingMask
powyżej, jest wystarczająca, gdy widok obraca.Być może trzeba umieścić to w UIViewController
który zawiera UIWebView
do rozmiaru pokryw po obróceniu:
- (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);
}
chciałbym też to odkryć, ponieważ to sprawi, że odbicie będzie wyglądało ładnie w UIWebView ... –
Tak, to jest najbardziej denerwujące, chciałbym także zainteresować się rozwiązaniem – MrCranky
możliwym duplikatem [Usuń UIWebView Shadow?] (http://stackoverflow.com/questions/1074320/remove-uiwebview-sh adow) – JosephH