我正在从服务器下载文件并在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
我得到的结果:
此处图像的某些部分位于标题的后面。我尝试了链接add margins in swift中给出的各种解决方案,但没有任何效果。
我的建议是在需要显示它的控制器中创建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
中需要显示文件的位置:
这样,即使您有navigationBar
,navigationBar
和topMargin
也不会有问题>
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 } }
希望这对您有所帮助!