如何更新子视图/网络视图的框架或大小-通过编程方式创建并添加到还包含导航栏的父视图中。 更改方向时,父视图会调整大小,但子视图不会调整大小。
我在viewdidload()
中有此代码:
myView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
1)如果该应用默认在横向模式下启动,则使用此代码。子视图高度在两个方向上都会失真。
2)如果默认情况下以纵向模式启动应用,则此代码可以在以后更改为任何方向时正常工作。
在解决第一种情况时,请提出一些想法。 预先感谢。
答案 0 :(得分:1)
如果您使用的是自动版式,我建议您使用尺寸类来处理此类更改。由于这是一个很大的概念,因此我无法在此处进行解释,但是如果您想对它有更多的了解,请观看wwdc 2017的this视频
答案 1 :(得分:0)
这是我想将自定义Web视图添加为子视图的方法:
1)在Main.storyboard中,添加导航栏,然后赋予以下约束并创建出口:
2)在这里,我有2种以编程方式使用约束的方法
application/json
import UIKit
import WebKit
class TestConstraintsViewController: UIViewController, WKUIDelegate {
@IBOutlet weak var myNavigationBar: UINavigationBar!
var webView: WKWebView!
var webConfiguration: WKWebViewConfiguration!
override func loadView() {
super.loadView()
webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: self.view.frame, configuration: webConfiguration)
webView.uiDelegate = self
webView.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(webView)
}
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string: "https://www.stackoverflow.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
//for leading trailing
NSLayoutConstraint.activate([
webView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
webView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)
])
//for top/bottom layout
if #available(iOS 11, *) {
let safeLayoutGuide = self.view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
webView.topAnchor.constraint(equalToSystemSpacingBelow: myNavigationBar.bottomAnchor, multiplier: 1.0),
safeLayoutGuide.bottomAnchor.constraint(equalToSystemSpacingBelow: webView.bottomAnchor, multiplier: 1.0)
])
} else {
let standardSpacing: CGFloat = 0.0
NSLayoutConstraint.activate([
webView.topAnchor.constraint(equalTo: myNavigationBar.bottomAnchor, constant: standardSpacing),
bottomLayoutGuide.topAnchor.constraint(equalTo: webView.bottomAnchor, constant: standardSpacing)
])
}
}
@IBAction func dismissView(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
}