【问题标题】:Black border around PDF in UIWebView, how to remove with SwiftUIWebView中PDF周围的黑色边框,如何使用Swift删除
【发布时间】:2015-02-12 22:35:58
【问题描述】:

我正在用 Swift 编写一个 IOS8 应用程序。在 UIWebView 中加载 PDF 时,我的 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;
    }
}  }

我几乎没有使用 Objective C 的经验,我什至不确定从哪里开始将它转换为 Swift。如果我能指出转换它的正确方向,或者如果有人编写了一个 Swift 应用程序,其中包含修复这个问题的代码,他们会让我使用,我们将不胜感激!

【问题讨论】:

  • 您应该阅读以下内容:stackoverflow.com/help/how-to-ask 您的问题需要改进。
  • 感谢您的建议。第一次在这里发帖。
  • @beefjerky8805 欢迎堆栈溢出。请编辑您的问题以包含您尝试编写的快速代码,并突出显示哪一行代码不起作用。如果有多行代码不起作用,请为每行单独提出一个问题(可能要等待第一个问题得到回答,然后再提出其他问题)。
  • 谢谢。我编辑以包含我想使用的代码,但老实说,我不确定如何开始使用它。如果有人能给我一些关于如何转换它的提示,我将不胜感激。

标签: ios swift xcode6


【解决方案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?
    }
}

【讨论】:

  • 谢谢!它有效——有点。当视图第一次加载时,我仍然得到黑色边框,但是如果我做任何改变视图的操作,例如点击隐藏栏,或者双击放大,或者旋转模拟器,那么黑色边框会永远消失.
  • 啊!我没有正确配置我的约束。您的解决方案现在效果很好。非常感谢!
  • @beefjerky8805 我遇到了同样的问题。第一次加载时它仍然显示为黑色。你做了什么来解决这个问题?
  • 很抱歉,我花了这么长时间才回复,你现在可能已经修好了。我的问题很简单,不知何故我没有为 webview 分配任何约束,而是分配了自动约束。我不太了解它,无法更详细地解释它。无论如何,我添加了 4 个约束:superview 的尾随空间 = -24,superview 的前导空间 = -24,superview 的底部空间 = 0,顶部布局的顶部空间 = -5。我还检查了底部工具栏中的选项,该选项允许 pdf 位于底部工具栏的后面,因为我的 pdf 对于视图来说太高了。希望这会有所帮助。
猜你喜欢
  • 2014-11-06
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 2012-03-11
  • 2010-09-08
  • 2019-03-14
  • 2019-12-18
相关资源
最近更新 更多