sono stato in grado di fare questo con l'aggiunta di subviews bianchi per la parte superiore e inferiore del ScrollView del WebView. Controllo il contenuto di WebView, quindi so che il bianco è OK - questo non funzionerà se stai caricando contenuti arbitrari.
// _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];
}
lo eseguo dopo il caricamento della pagina in modo che webView.scrollView.contentSize.height
mi darà la giusta altezza. Non sono sicuro di come funzionerà se le tue pagine cambiano in altezza in modo dinamico. La mia pagina viene caricata solo una volta; se il tuo si sta ricaricando, vorrai saltare in esecuzione alloc
/init
su _topCover
e _bottomCover
dopo la prima volta per efficienza.
Aggiornamento: Non sono sicuro che il mio uso di autoresizingMask
, sopra, sia sufficiente quando la vista ruota.Potrebbe essere necessario mettere questo nel UIViewController
che contiene il UIWebView
per ridimensionare le coperte dopo la rotazione:
- (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);
}
fonte
2012-10-08 04:00:12
vorrei trova anche questo, in quanto ciò renderebbe il rimbalzo piacevole in un UIWebView ... –
Sì, questo è più fastidioso, sarei interessato anche a una soluzione – MrCranky
possibile duplicare di [Rimuovi UIWebView Shadow?] (http://stackoverflow.com/questions/1074320/remove-uiwebview-sh adow) – JosephH