Iphone 是否删除或更改UIWebView文档显示周围框架的颜色?
我使用Iphone 是否删除或更改UIWebView文档显示周围框架的颜色?,iphone,ios,uiwebview,Iphone,Ios,Uiwebview,我使用UIWebView来显示嵌入到主视图中的各种文件类型(因此我不能使用专用的PDF查看器)(因此我不能使用模式文档交互控制器)。“我的主视图”的背景设计与出现在UIWebView中文档周围的浅灰色框架冲突。有人知道如何去除灰色框架,使其透明或改变其颜色吗 我熟悉并使用了UIWebView的技术,以避免在加载时出现“彩色闪光”,并在“过度浏览”web视图时出现这种情况,但我没有看到任何人处理这个灰色框架。(它仅在显示.doc或.pdf等文档时出现,而不是在显示HTML内容时出现。)我已隐藏了所
UIWebView
来显示嵌入到主视图中的各种文件类型(因此我不能使用专用的PDF查看器)(因此我不能使用模式文档交互控制器)。“我的主视图”的背景设计与出现在UIWebView
中文档周围的浅灰色框架冲突。有人知道如何去除灰色框架,使其透明或改变其颜色吗
我熟悉并使用了
UIWebView
的技术,以避免在加载时出现“彩色闪光”,并在“过度浏览”web视图时出现这种情况,但我没有看到任何人处理这个灰色框架。(它仅在显示.doc或.pdf等文档时出现,而不是在显示HTML内容时出现。)我已隐藏了所有作为UIWebView的
滚动视图的子视图的图像,因此显然这是来自其他地方。您可以通过指定其backgroundColor
属性来更改WebView的背景色:
myWebView.backgroundColor = [UIColor redColor]; // will make red bakground
如果您想要透明,请使用
[UIColor clearColor]
。但请记住,通过让您的视图成为家长,您可能会恶化应用程序的性能 既然这已经有一段时间了,我就把一些想法说出来
如果UIWebView将加载的文档视为页面,则可以使用类的方法来操作文档对象模型,但此方法有一些限制
除此之外,您唯一真正可以使用的就是操纵视图层次结构来修改
UIWebView
的任何子视图,但是如果UIWebView
类直接呈现查看器而不是创建层次结构,则可能没有任何东西可供您操作。您需要一堆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
方法(我想webView.scrollView.delegate的scrollViewDidScroll
是个好地方)。您还需要在项目中包含QuartzCore
框架
这里发生了什么:
任何视图都使用名为层的东西进行渲染。层可以有自己的层次结构,每一层都可以有自己的边界和阴影,所以让你烦恼的帧就是其中一层的阴影。坏事情-UIWebView在滚动时重新创建它-所以您需要经常使用此方法。我猜,shadowOpacity
附带了一个默认动画,因此需要CATTransaction来禁用它。看起来无法从UIWebView中删除边框,但您不能使用苹果在这里展示的CGContextDrawPDFPage()
:试试这个
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];
}
}
}
}
这可能会对您有所帮助。:-) 此问题是在iOS 4是当前的时候编写的,但在iOS 5和更高版本中,仅设置UIWebView的背景颜色和不透明属性将删除该灰色帧:
myWebView.opaque = NO;
myWebView.backgroundColor = [UIColor clearColor];
不幸的是,这并没有改变在web视图中显示的.doc或.pdf文件周围显示的灰色框架。它只会在文档加载或过卷时更改灰色框架后面的颜色。我认为这在当前SDK中无法实现。这在未来的iOS版本中可能是可能的。我没想到会有一个官方的方法来做到这一点,但我希望有人有一个聪明的解决办法,比如隐藏阴影图像。这很酷,在我的测试中,在滚动或缩放过程中不会重新创建阴影。然而,问题是如何更改帧的颜色,而不是如何删除阴影!好的,如果(l.shadowOpacity>0){l.shadowColor=[UIColor redColor].CGColor;}
而不是l.shadowOpacity=0,则添加代码>据我所知,它会改变框架的颜色,“出现在文档周围的浅灰色框架”是CALayer阴影,正如我在回答中提到的。因此,我的代码-正在删除它,并使pdf文件按原样浮动,每个页面周围没有边框对不起,有一个默认为浅灰色的背景色,然后上面的阴影是分开的。我认为这令人困惑,因为问题来自iOS 4;我们现在需要做的就是更改UIWebView背景色,以消除我刚才提到的框架。我刚刚在上面的原始问题中添加了一条评论。哦,你是对的,这并不能解决iOS4中的问题,对不起。我注意到这个问题中添加了悬赏,所以我回去看看我自己的应用程序的结局。显然,这个问题是由iOS 5解决的,它是在我发布问题几个月后发布的。在iOS 5设备上,更改UIWebView的背景颜色(或将其设置为clearColor)可以按预期工作,但在iOS 4设备上,灰色边框仍会出现。我甚至没有注意到这个问题已经消失了,否则我会在那个时候发回这里。这能回答你的问题吗,维维亚纳兰哈?如果没有,可能您在当前的iOS中看到了不同的问题。请参考[这些链接][1],希望这可以帮助您实现您的需求。[1] :在当前的iOS版本12.3.1之前,它一直在为我工作。