我正在使用UIWebView
来显示嵌入到我的主视图中的各种文件类型(因此我无法使用专门的PDF查看器)(因此我无法使用模态文档交互控制器) 。我的主视图的背景设计与UIWebView
中文档周围出现的浅灰色框架相冲突。有没有人知道如何删除那个灰色框架,使其透明或改变其颜色?
我熟悉并使用UIWebView
的{{3}}技术来避免加载时出现“颜色闪烁”,以及“过度滚动”时出现的changing the background color网络视图,但我还没有看到任何人解决这个灰色框架。 (仅在显示.doc或.pdf等文档时出现,而不是在显示HTML内容时出现。)我隐藏了所有图像,这些图像是UIWebView's
滚动视图的子视图,所以显然这是来自其他地方。
答案 0 :(得分:2)
这个问题是在iOS 4是最新的时候编写的,但是在iOS 5及更高版本中,只需设置UIWebView的backgroundColor和opaque属性就会删除那个灰框:
myWebView.opaque = NO;
myWebView.backgroundColor = [UIColor clearColor];
答案 1 :(得分:0)
您可以通过分配其backgroundColor
属性来更改WebView的背景颜色:
myWebView.backgroundColor = [UIColor redColor]; // will make red bakground
如果您希望透明度使用[UIColor clearColor]
。但请记住 - 通过使您的观点变得透明,您可以恶化应用程序的性能。
答案 2 :(得分:0)
由于这已经存在了一段时间,我只想提出一些想法。
如果UIWebView将加载的文档视为页面,您可以使用stringByEvaluatingJavaScriptFromString:
类的UIWebView
方法来操作文档对象模型,但此方法有一些限制。
除此之外,您唯一可以随意使用的是操纵视图层次结构来修改UIWebView
的任何子视图,但如果UIWebView
可能没有任何操作可供处理class直接呈现查看器而不是创建层次结构。
答案 3 :(得分:0)
你需要一堆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
webView.scrollView.delegate
是一个好地方)。您还需要在项目中包含QuartzCore
框架。
这里发生了什么:
任何视图都使用名为layer
的内容进行渲染。图层可以有自己的层次结构,每个图层都可以有自己的边框和阴影,因此让你烦恼的框架就是其中一个图层的阴影。糟糕的事情 - UIWebView在滚动时重新创建它 - 所以你需要不断地使用这个方法。我猜shadowOpacity
附加了一个默认动画,所以你需要CATransaction来禁用它。
答案 4 :(得分:0)
看起来无法从UIWebView中删除边框,但您不能像Apple在此处显示的那样使用CGContextDrawPDFPage()
:http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html
答案 5 :(得分:-1)
试试这个,
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];
}
}
}
}
这可能会对你有所帮助。 : - )