在Swift IOS的 webView顶部添加边距

问题描述 投票:1回答:1

我正在从服务器下载文件并在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
}

我已经在Class之内创建了webView属性,例如:

var webView : WKWebView!

并且在viewDidLoad()中,我写过:

webView = WKWebView(frame: self.view.frame)
webView.translatesAutoresizingMaskIntoConstraints = false
webView.isUserInteractionEnabled = true
webView.navigationDelegate = self

我得到的结果:

enter image description here

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

ios swift
1个回答
1
投票

我的建议是在需要显示它的控制器中创建WKWebView的实例,在本例中为pdfVC

可以有模型,例如:

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

创建FileViewController的情况,并为其分配文件类型

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中需要显示文件的位置:

这样,即使您有navigationBarnavigationBartopMargin也不会有问题>

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)
        default: break
        }
        let webView = WKWebView(frame: view.frame)
        webView.load(urlRequest)
        self.view = webView
    }
}

希望这对您有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.