gpt4 book ai didi

ios - 在 UIWebView iOS 8 中呈现 PDF,导致 PDF 周围出现黑色边框

转载 作者:IT王子 更新时间:2023-10-29 07:52:15 26 4
gpt4 key购买 nike

在 iOS 8 中,当将 .PDF 渲染到 UIWebview 时,显示的 PDF 周围有黑色边框和背景(不是整个背景 View )。请注意,这不是设置为的 UIWebview 背景:

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

这在 < iOS8 中不存在,(.PDF 周围没有黑色边框彩色背景)

有没有其他人有此经历,谁能对此有所了解?

我像这样将我的 PDF 加载到 Web View 中..

- (void)viewWillAppear:(BOOL)animated
{

[super viewWillAppear:animated];
if (self.pdfData != nil && self.viewHasUnloaded == YES) {
self.viewHasUnloaded = NO;
[self.webView loadData:self.pdfData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
}
}

最佳答案

经过一番调查后,我设法了解了问题出在哪里。所以 UIWebView 是一个 UIView,带有一个 UIScrollView(带有私有(private)类 _UIWebViewScrollView)作为 subview 。将 PDF 加载到 UIWebView 的流程如下:
1) UIWebView 开始加载请求。此时 -webViewDidStartLoad: 委托(delegate)方法被调用。
2) PDF 加载(下载)后,委托(delegate)方法 -webViewDidFinishLoad: 被调用。那时 UIWebView 知道这是一个 PDF 文件,并且带有私有(private)类 UIWebPDFView 的 subview 已经插入到 _UIWebViewScrollView 中,但是 PDF本身还没有渲染。
问题来了。
3) PDF 在屏幕外呈现,准备就绪后,带有私有(private)类 UIPDFPageView 的新 subview 被插入到 UIWebPDFView 中并显示 PDF。问题是当发生这种插入时 UIWebPDFView 将其 backgroundColor 设置为黑色并且这种插入发生在 -webViewDidFinishLoad: 被调用之后(时间取决于要渲染的 PDF 有多大)。这就是为什么遍历 UIWebView 的所有 subview 并将它们的 backgroundColor 属性设置为白色不是一个好的解决方案,例如。

好消息是 UIViewController 的方法 -viewDidLayoutSubviewsUIPDFPageView 插入到 UIWebView 时被调用的 View 层次结构。所以,最后的解决方案是将这个 Objective-C 代码放入我们的 View Controller 中:

-(void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];

// Assuming self.webView is our UIWebView
// We go though all sub views of the UIWebView and set their backgroundColor to white
UIView *v = self.webView;
while (v) {
v.backgroundColor = [UIColor whiteColor];
v = [v.subviews firstObject];
}
}

在 Swift 中:

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
var v:UIView? = self.webView
while (v != nil) {
v!.backgroundColor = UIColor.whiteColor()
v = v!.subviews.first
}
}

关于ios - 在 UIWebView iOS 8 中呈现 PDF,导致 PDF 周围出现黑色边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25813551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com