在UIWebView中围绕PDF的黑色边框,如何使用Swift删除

时间:2014-12-14 20:31:55

标签: ios swift xcode6

我正在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应用程序,其中包含修复此问题的代码,我们会让他使用,我们将不胜感激!

1 个答案:

答案 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?
    }
}