我正在从服务器下载文件并显示在我的 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
我得到的结果:
此处图片的某些部分位于标题后面。我已经尝试了链接 add margins in swift 中给出的各种解决方案, 但没有任何效果。
最佳答案
我的建议是在需要显示它的 Controller 中创建 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)
}
And inside your
VC
where you need to display a file:
这样,即使你有 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)
@unknown default:
break
}
let webView = WKWebView(frame: view.frame)
webView.load(urlRequest)
self.view = webView
}
}
希望这对您有所帮助!
关于ios - 在 Swift IOS 的 webView 顶部添加边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910717/