如何從UIWebView中刪除漸變 - 如果過度滾動頂部或底部,就會看到該漸變。 此代碼從UIWebView中刪除漸變背景?
webView.backgroundColor = [UIColor whiteColor];
只是改變漸變的顏色,它不會刪除它。如何才能做到這一點?
(注意:不是同一個問題作爲UIWebView underside)
如何從UIWebView中刪除漸變 - 如果過度滾動頂部或底部,就會看到該漸變。 此代碼從UIWebView中刪除漸變背景?
webView.backgroundColor = [UIColor whiteColor];
只是改變漸變的顏色,它不會刪除它。如何才能做到這一點?
(注意:不是同一個問題作爲UIWebView underside)
啊哈,是的術語失敗。我根本不會說那個影子,但是我會說。這是我的類型安全的代碼來實現效果。總結一下:這將隱藏滾動視圖的任何圖像視圖子節點。它不像(objectAtIndex:0)方法那樣容易改變,所以如果Apple重新排序webView控件的子項,它將會很好地工作,但仍然依賴於漸變效果適用於父視圖的圖像視圖視圖(並確實有一個基於Web視圖的滾動視圖)。
{
webView.backgroundColor = [UIColor whiteColor];
for (UIView* subView in [webView subviews])
{
if ([subView isKindOfClass:[UIScrollView class]]) {
for (UIView* shadowView in [subView subviews])
{
if ([shadowView isKindOfClass:[UIImageView class]]) {
[shadowView setHidden:YES];
}
}
}
}
}
你指的影子? Remove UIWebView Shadow?
我發現如何做到這一點的唯一方法是:
for(UIView *aView in [[[webView subviews] objectAtIndex:0] subviews]) {
if([aView isKindOfClass:[UIImageView class]]) { aView.hidden = YES; }
}
它只是僅有幾步之遙通的UIWebView的子視圖,並刪除了該視圖,如果它是一個圖像視圖。
我沒有把它放在任何App Store應用程序中,所以我不知道蘋果是否會接受它。
編輯:布賴恩的鏈接提供了更多的細節。
使用上面建議的方法,您將不能在稍後編輯您的滾動指示器/插槽。它們也顯示爲UIImageView,因此您應該檢查最後一個對象:
UIView* lastView = [[subView subviews] lastObject];
for (UIView* shadowView in [subView subviews])
{
if(shadowView!=lastView) ... <-this one is a scroll
}
要透明UIWebView並移除滾動條。
webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
for(UIView *view in webView.subviews){
if ([view isKindOfClass:[UIImageView class]]) {
// to transparent
[view removeFromSuperview];
}
if ([view isKindOfClass:[UIScrollView class]]) {
UIScrollView *sView = (UIScrollView *)view;
for (UIView* shadowView in [sView subviews]){
//to remove shadow
if ([shadowView isKindOfClass:[UIImageView class]]) {
[shadowView setHidden:YES];
}
}
}
}
我能夠通過添加白色子視圖中的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
就足夠了。您可能需要把這個包含您的UIWebView
的UIViewController
旋轉後,調整內容包括:
- (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);
}
我已經在建@damithH的回答
@implementation UIWebView (Extensions)
- (void)setBackgroundAndShadowVisible:(BOOL)visible
{
self.opaque = !visible;
self.backgroundColor = [self.backgroundColor colorWithAlphaComponent:visible ? 1.0 : 0.0];
for(UIView *view in [self subviews])
{
if([view isKindOfClass:[UIImageView class]])
{
view.hidden = !visible;
}
if([view isKindOfClass:[UIScrollView class]])
{
UIScrollView *scrollView = (UIScrollView *)view;
for (UIView *shadowView in [scrollView subviews])
{
if ([shadowView isKindOfClass:[UIImageView class]])
{
shadowView.hidden = !visible;
}
}
}
}
}
@end
if (UIDevice.currentDevice.systemVersion.intValue < 7)
for (UIImageView *imageView in webView.scrollView.subviews)
if ([imageView isKindOfClass:[UIImageView class]] && imageView.image.size.width == 1)
imageView.hidden = YES;
我想找到這一點,因爲這將使UIWebView中反彈看起來不錯... – 2010-10-22 13:26:35
是的,這是最煩人的,我也有興趣在解決方案 – MrCranky 2010-11-12 15:20:26
可能重複的[刪除UIWebView影?](http:///stackoverflow.com/questions/1074320/remove-uiwebview-sh adow) – JosephH 2012-03-26 10:11:51