移除或更改UIWebView文档显示的框架颜色?

我正在使用UIWebView来显示embedded到我的主视图(所以我不能使用模态文档交互控制器)的各种文件types(所以我不能使用专门的PDF查看器)。 我的主视图有一个与UIWebView文档周围出现的浅灰色框架相冲突的背景devise。 有谁知道一种方法来删除该灰色的框架,使其透明或改变其颜色?

我熟悉并使用了改变 UIWebView 的背景颜色的技术,以避免在加载时出现“彩色闪光”,以及去除在“超滚动”web视图时出现的顶部和底部阴影 ,但是我没有没有人看到这个灰色的框架。 (只有在显示文档如.doc或.pdf时才会出现,而不是在显示HTML内容时显示。)我隐藏了UIWebView's滚动视图子视图的所有图像,显然这是来自其他地方。

这个问题是在iOS 4当前编写的,但在iOS 5和更高版本中,只需设置UIWebView的backgroundColor和opaque属性即可移除该灰色框架:

 myWebView.opaque = NO; myWebView.backgroundColor = [UIColor clearColor]; 

您可以通过指定其backgroundColor属性来更改WebView的背景颜色:

 myWebView.backgroundColor = [UIColor redColor]; // will make red bakground 

如果你想透明使用[UIColor clearColor]来代替。 但请记住 – 通过使您的意见tranparent你可以恶化应用程序的性能。

由于这已经有一段时间了,我只是在这里抛出一些想法。

如果UIWebView将加载文档视为页面,则可以使用UIWebView类的stringByEvaluatingJavaScriptFromString:方法来操作文档对象模型,但此方法有一些限制。

除此之外,您真正留下的唯一东西是操纵视图层次结构来修改UIWebView任何子视图,但如果UIWebView类直接呈现查看器而不是创build层次结构,则可能没有任何操作。

它看起来像是不可能从UIWebView中删除边框,但是您可以不使用CGContextDrawPDFPage()作为Apple展示在这里: http : //developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro。 HTML

你需要一堆CoreAnimation魔法:

 - (void) hideShadowInLayer:(CALayer *) layer { for (CALayer *l in layer.sublayers) { l.shadowOpacity = 0; [self hideShadowInLayer:l]; } } - (void) hideShadows { [CATransaction begin]; [CATransaction setValue:(id) kCFBooleanTrue forKey:kCATransactionDisableActions]; [self hideShadowInLayer:webView.layer]; [CATransaction commit]; } 

你需要执行hideShadows方法在加载你的文档后,当你滚动它(我想scrollViewDidScroll是一个好地方)。 您还需要将QuartzCore框架包含到您的项目中。

这里发生了什么:

任何视图使用称为layer东西进行渲染。 图层可以有自己的层次结构,每一层都可以有自己的边框和阴影,所以令人讨厌的框架就是其中之一的阴影。 坏事 – UIWebView在滚动时重新创build – 所以你需要不断地使用这个方法。 我猜shadowOpacity有一个默认的animation,所以你需要CATransaction来禁用它。

尝试这个,

 self.webview.backgroundColor = [UIColor whiteColor]; for (UIView* subView in [self.webview subviews]) { if ([subView isKindOfClass:[UIScrollView class]]) { for (UIView* shadowView in [subView subviews]) { if ([shadowView isKindOfClass:[UIImageView class]]) { [shadowView setHidden:YES]; } } } } 

这可能会帮助你。 🙂