我正在Swift中编写一个IOS8应用程序。在UIWebView中加载时,我的PDF周围会出现黑色边框。关于如何修复它有write up,但我一直在努力将其转换为Swift。这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.hidesBarsOnTap = true
var url = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(myArray[0], ofType: "pdf")!)
var request = NSURLRequest(URL: url!)
webView.loadRequest(request)
}
这是来自this link的客观C代码,用于修复黑色边框问题。这是在webViewDidFinishLoad:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")) {
[self performSelector:@selector(clearBackground) withObject:nil afterDelay:0.1];}
这就是它所调用的功能:
- (void)clearBackground {
UIView *v = webVw;
while (v) {
//v.backgroundColor = [UIColor whiteColor];
v = [v.subviews firstObject];
if ([NSStringFromClass([v class]) isEqualToString:@"UIWebPDFView"]) {
[v setBackgroundColor:[UIColor whiteColor]];
// background set to white so fade view in and exit
[UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionCurveEaseOut
animations:^{
webVw.alpha = 1.0;
}
completion:nil];
return;
}
} }
我几乎没有目标C的经验,我甚至不确定从哪里开始将其转换为Swift。如果我可以在转换它时指向正确的方向,或者如果有人编写了一个Swift应用程序,其中包含修复此问题的代码,我们会让他使用,我们将不胜感激!
答案 0 :(得分:1)
我认为即使在Objective-C中,您建议的解决方案还不够。 请参阅Rendering PDF in UIWebView iOS 8, causes a black border around PDF。
而且,我在Swift中解决了这个问题。 将下面的代码放入主UIViewController。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
clearPDFBackground(self.webView)
}
func clearPDFBackground(webView: UIWebView) {
var view :UIView?
view = webView as UIView
while view? != nil {
if NSStringFromClass(view?.dynamicType) == "UIWebPDFView" {
view?.backgroundColor = UIColor.clearColor()
}
view = view?.subviews.first as UIView?
}
}