WKWebView 全屏而不是框架?

Posted

技术标签:

【中文标题】WKWebView 全屏而不是框架?【英文标题】:WKWebView fullscreen instead of frame? 【发布时间】:2017-10-18 09:45:15 【问题描述】:

我是 Swift 3.0 的新手,我需要一些帮助...

我正在尝试创建一个应该显示网站的框架。网站不应填满整个视图,而应填满框架。每次我启动应用程序时,网站都会填满整个屏幕,而不仅仅是框架...... :(

这是我的代码:

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate 


    @IBOutlet weak var webView: WKWebView!

    override func loadView() 
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    

    override func viewDidLoad() 
        super.viewDidLoad()
        let myURL = URL(string: "https://www.google.com/")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    

我想要什么:

我得到了什么:

【问题讨论】:

【参考方案1】:

为具有相等填充的 webview 添加约束(锚点)。

用故事板布局试试这个:

从您的文件中删除 loadView() 代码:

或以编程方式尝试:

import UIKit
import WebKit

class WebKitController: UIViewController 

    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() 
        super.viewDidLoad()
        let myURL = URL(string: "https://www.google.com/")
        let myRequest = URLRequest(url: myURL!)
        setupWKWebViewConstraints()
        webView.load(myRequest)
    

    // add constraints to your web view
    func setupWKWebViewConstraints() 

        let paddingConstant:CGFloat = 30.0

        webView.translatesAutoresizingMaskIntoConstraints = false

        webView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: paddingConstant).isActive = true
        webView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -paddingConstant).isActive = true
        webView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: paddingConstant).isActive = true
        webView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -paddingConstant).isActive = true
    


【讨论】:

现在只是黑屏... :/ 我的项目中一定有某种错误。当我在另一个项目中尝试相同的代码时,它应该可以正常工作....但是非常感谢您的帮助,我非常感谢:) 你遇到了loadView() 函数的问题,它可能是从堆栈溢出帖子中获取/复制的,对吧?从您的代码中删除 loadView() 并添加约束,将起作用。 删除了视图控制器并创建了一个新的:现在它可以工作了! :) 我正在寻找如何以编程方式将通过@IBOutlet 初始化的WKWebView 设置为全屏。你的代码帮助了我。我刚刚使用 0.0 进行填充 :) 因为 WKWebView 通过 WKWebView(frame: .zero, configuration: WKWebViewConfiguration()) 会自动全屏显示,但如果没有 @IBOutletUIView.transition() 将无法工作。

以上是关于WKWebView 全屏而不是框架?的主要内容,如果未能解决你的问题,请参考以下文章

iframe 全屏而不是滚动?

斯威夫特 | UIViewController 不显示为 PopUp 但全屏

什么时候应该使用 wkWebView?

WKWebView的evaluateJavascript方法的completionHandler运行在啥线程上?

带有 WKWebView 单元格的滚动 UICollectionView 的 UITableView

在 iOS 9 中遇到 WKWebview 和 UIWebView 问题