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

标签 ios swift

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

我得到的结果:

enter image description here

此处图片的某些部分位于标题后面。我已经尝试了链接 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 你也不会有 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
    }
}

希望这对您有所帮助!

关于ios - 在 Swift IOS 的 webView 顶部添加边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910717/

相关文章:

php - 如何使用 PHP 检测请求来自什么设备?

swift - 实例成员 'result' 不能用于类型 'Regex.Match'

ios - Swift IOS 在弹出后保持 View Controller 在后台运行

ios - UITableView 方法和等效的 UITableViewDatasource 方法有什么区别?

ios - 在 Swift 中构建地理定位

ios - 消息扩展上的 UUID 发生了奇怪的事情

ios - 使用约束为不同的屏幕尺寸放大按钮

ios - 仅从核心数据中获取所需的数据还是所有数据?

iOS App 内部控制权转移

ios - 使用 SLPagingViewSwift 和 Storyboard展开可选值时意外发现 nil