如何在带有标签和按钮的一半页面上显示WKWebView

时间:2019-09-20 20:38:24

标签: swift xcode wkwebview

我一般对Xcode和应用程序开发都是陌生的,并且是一名高中生,正在为我的高级项目制作应用程序。我有一个视图控制器,我需要在屏幕的下半部分显示一个网站,并在网站上方有一个标签和按钮。使用Apple在其有关WKWeb View的开发人员文档中提供的示例代码,我可以加载网站,但它占用了全屏显示。有没有一种方法可以使网页仅占据屏幕的一半。我还没有找到有关如何执行此操作的好教程,但是如果有人知道有帮助的话。

import UIKit
import WebKit

class HomeViewController: UIViewController, WKUIDelegate{


    @IBOutlet weak var webView: WKWebView!

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

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
       let myURL = URL(string:"http://example.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }




} ```


1 个答案:

答案 0 :(得分:1)

我认为您的问题在这里:view = webView。 在这里,您将webView分配为ViewController的rootView,它通常是整个屏幕(至少在您的情况下如此)。

您最好将其添加到视图中。

import UIKit
import WebKit

class HomeViewController: UIViewController, WKUIDelegate {

private var webView = WKWebView(frame: CGRect.zero, configuration: WKWebViewConfiguration())

override func viewDidLoad() {
    super.viewDidLoad()

    // set the delegate for webView
    webView.uiDelegate = self

    // define URL
    let myURL = URL(string:"https://www.apple.com/de/")

    // create request
    let myRequest = URLRequest(url: myURL!)

    // show request
    webView.load(myRequest)

    // make webView ready for Autolayout
    webView.translatesAutoresizingMaskIntoConstraints = false

    // add webView to view
    view.addSubview(webView)

    // size the webView beeing 75 % of the screen
    webView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    webView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    webView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    webView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.75).isActive = true
    }    
}