WKWebView LayoutConstraints 问题
WKWebView LayoutConstraints issue
我创建了一个简单的 webview 应用程序。但是有一个小问题,我无法解决。它加载第一页没有问题。
当我点击第一个输入时,程序崩溃,错误代码如下:
2017-10-28 23:50:54.289690+0400 BFI Schools[68425:3885613] [LayoutConstraints] 无法同时满足约束条件。
可能至少以下列表中的约束之一是您不想要的。
尝试这个:
(1)查看每个约束并尝试找出您不期望的;
(2) 找到添加了不需要的约束或约束的代码并修复它。
(注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档)
我的代码如下:
//
// ViewController.swift
// BFI Schools
//
// Created by Kamandar Abdullayev on 10/28/17.
// Copyright © 2017 ROOM404.AZ. All rights reserved.
//
import UIKit
import WebKit
class ViewController: UIViewController , UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
@IBOutlet weak var spinner: UIActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
view.translatesAutoresizingMaskIntoConstraints=false
let url = URL(string: "https://www.parent.e-hism.co")!
let request = URLRequest(url: url)
if Reachability.isConnectedToNetwork() == true {
webView.loadRequest(request)
} else {
let alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK")
alert.show()
}
}
func webViewDidStartLoad(_ : UIWebView) {
spinner.startAnimating()
}
func webViewDidFinishLoad(_ : UIWebView) {
spinner.stopAnimating()
}
}
我已经尝试了在 Internet 上找到的所有帮助,但没有成功。
一般来说,您应该遵循下一个流程
- 将 webView 作为子视图添加到
UIViewController
的视图(您可能
在 XIB 或 Storyboard 中完成过)
- 在 webView 和
UIViewController
的视图之间添加自动布局约束
代码或在 Interface Builder
另外,请删除
view.translatesAutoresizingMaskIntoConstraints=false
如果一切正常,请附上您的 XIB 或 Storyboard。
更新
这是我的 ViewController,仅显示 WKWebView。
class ViewController: UIViewController {
lazy var webView: WKWebView = {
let webView = WKWebView(frame: .zero)
webView.translatesAutoresizingMaskIntoConstraints = false
return webView
}()
override func viewDidLoad() {
super.viewDidLoad()
// layout code
view.addSubview(webView)
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[webView]|", options: [], metrics: nil, views: ["webView": webView]))
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[webView]|", options: [], metrics: nil, views: ["webView": webView]))
// and then code to load request
}
}
有趣的是,很多人都会遇到这种情况。我有一个干净的项目 运行,没有其他控件并遇到同样的问题:单击“搜索”(键盘弹出窗口)时的布局约束。
它可能在此处表示为 iOS 11 错误:
根据以下来自 Reveal 的截图,这似乎是 Apple 代码中的自动布局问题。我打赌他们会在某个时候修复它。
我创建了一个简单的 webview 应用程序。但是有一个小问题,我无法解决。它加载第一页没有问题。
当我点击第一个输入时,程序崩溃,错误代码如下:
2017-10-28 23:50:54.289690+0400 BFI Schools[68425:3885613] [LayoutConstraints] 无法同时满足约束条件。 可能至少以下列表中的约束之一是您不想要的。 尝试这个: (1)查看每个约束并尝试找出您不期望的; (2) 找到添加了不需要的约束或约束的代码并修复它。 (注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档)
我的代码如下:
//
// ViewController.swift
// BFI Schools
//
// Created by Kamandar Abdullayev on 10/28/17.
// Copyright © 2017 ROOM404.AZ. All rights reserved.
//
import UIKit
import WebKit
class ViewController: UIViewController , UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
@IBOutlet weak var spinner: UIActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
view.translatesAutoresizingMaskIntoConstraints=false
let url = URL(string: "https://www.parent.e-hism.co")!
let request = URLRequest(url: url)
if Reachability.isConnectedToNetwork() == true {
webView.loadRequest(request)
} else {
let alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK")
alert.show()
}
}
func webViewDidStartLoad(_ : UIWebView) {
spinner.startAnimating()
}
func webViewDidFinishLoad(_ : UIWebView) {
spinner.stopAnimating()
}
}
我已经尝试了在 Internet 上找到的所有帮助,但没有成功。
一般来说,您应该遵循下一个流程
- 将 webView 作为子视图添加到
UIViewController
的视图(您可能 在 XIB 或 Storyboard 中完成过) - 在 webView 和
UIViewController
的视图之间添加自动布局约束 代码或在 Interface Builder 另外,请删除
view.translatesAutoresizingMaskIntoConstraints=false
如果一切正常,请附上您的 XIB 或 Storyboard。
更新 这是我的 ViewController,仅显示 WKWebView。
class ViewController: UIViewController {
lazy var webView: WKWebView = {
let webView = WKWebView(frame: .zero)
webView.translatesAutoresizingMaskIntoConstraints = false
return webView
}()
override func viewDidLoad() {
super.viewDidLoad()
// layout code
view.addSubview(webView)
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[webView]|", options: [], metrics: nil, views: ["webView": webView]))
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[webView]|", options: [], metrics: nil, views: ["webView": webView]))
// and then code to load request
}
}
有趣的是,很多人都会遇到这种情况。我有一个干净的项目 运行,没有其他控件并遇到同样的问题:单击“搜索”(键盘弹出窗口)时的布局约束。
它可能在此处表示为 iOS 11 错误:
根据以下来自 Reveal 的截图,这似乎是 Apple 代码中的自动布局问题。我打赌他们会在某个时候修复它。