我正在从服务器下载文件并显示在ios设备中。文件类型可以是图像,pdf等任何类型,并且都可以正常加载。现在的问题是,文件或图像的某些部分隐藏在页面标题的后面。加载后,我想在文件顶部添加边距。

我编写的显示文件代码:

func openFile(file:String) {
    let myBlog = file
    let url = NSURL(string: myBlog)
    let request = NSURLRequest(url: url! as URL)
    webView.load(request as URLRequest)
    self.view.addSubview(webView)
    let pdfVC = UIViewController()
    pdfVC.view.addSubview(webView)
    pdfVC.title = "File"
    self.navigationController?.pushViewController(pdfVC, animated: true)
    self.navigationController!.navigationBar.tintColor = colors.whiteColor
}

我已经在类中创建了webView属性,例如:
var webView : WKWebView!

在viewDidLoad()中,我写了:
webView = WKWebView(frame: self.view.frame)
webView.translatesAutoresizingMaskIntoConstraints = false
webView.isUserInteractionEnabled = true
webView.navigationDelegate = self

结果我得到:

ios - 在Swift IOS的​​webView顶部添加边距-LMLPHP

图片的某些部分位于标题的后面。我尝试了链接add margins in swift中给出的各种解决方案,但是没有任何效果。

最佳答案

我的建议是在需要显示它的控制器中创建WKWebView实例,在本例中为pdfVC
可以有模型,例如:

enum FileType {
    case image(fileURL: URL)
    case pdf(fileURL: URL)
}

创建FileViewController的情况并为其分配fileType
func openFile(file:String) {
    let pdfViewController = FileViewController()
    pdfVC.fileType = FileType.pdf(fileURL: URL(string: "https://www.google.com")!) // example
    pdfVC.title = "File"
    navigationController?.pushViewController(pdfVC, animated: true)
}

VC内部,您需要显示文件:

这样,即使您有navigationBar,您也不会遇到navigationBartopMargin的问题
class FileViewController: UIViewController {

    var fileType: FileType!

    override func viewDidLoad() {
        super.viewDidLoad()

        var urlRequest: URLRequest!
        switch fileType {
        case .image(let url), .pdf(let url):
            urlRequest = URLRequest(url: url)
        @unknown default:
            break
        }

        let webView = WKWebView(frame: view.frame)
        webView.load(urlRequest)
        self.view = webView
    }
}

希望对您有所帮助!

07-27 23:08