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())
会自动全屏显示,但如果没有 @IBOutlet
,UIView.transition()
将无法工作。以上是关于WKWebView 全屏而不是框架?的主要内容,如果未能解决你的问题,请参考以下文章
斯威夫特 | UIViewController 不显示为 PopUp 但全屏
WKWebView的evaluateJavascript方法的completionHandler运行在啥线程上?