spe*_*peg 5 storyboard swift ios10
我试图在我的应用程序中添加一个WKWebView,占用屏幕的大约2/3(在底部留空间).因为似乎无法添加WKWebView到故事板,我添加了一个常规UIView.然后在我的viewDidAppear方法中,我尝试创建一个WKWebView具有相同边界.这是一个合理的方法吗?
我的代码看起来像这样:
@IBOutlet var conversationView: UIView!
override func viewDidAppear(_ animated: Bool) {
let webView = WKWebView(frame: conversationView.frame)
if let url = URL(string: "https://www.google.com") {
webView.load(URLRequest(url: url))
}
// conversationView = webView // <-- doesn't work :\
conversationView.addSubview(webView) // works!
}
Run Code Online (Sandbox Code Playgroud)
完全交换视图根本不起作用,因此我将Web视图添加为我添加到故事板的临时视图的子视图.这至少让我限制它的位置和大小,但仍然感觉非常kludgy,并且必须有一个更好的方法来做到这一点..
没有其他答案对我有用.Samip Shah的答案是在正确的轨道上,但限制条件并不完全正确.要记住的重要一点是将translatesAutoresizingMaskIntoConstraints设置为false.
所以,这是我的解决方案.在故事板中创建一个UIView,其中包含WKWebView所需的约束和布局.在视图控制器中添加代码:
@IBOutlet var contentView: UIView!
var wkWebView:WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
wkWebView = WKWebView(frame:contentView.frame)
contentView.addSubview(wkWebView)
constrainView(view: wkWebView, toView: contentView)
let request = URLRequest(url: /* your url here */)
wkWebView.load(request)
}
Run Code Online (Sandbox Code Playgroud)
用于约束视图的代码.如果要使用多个视图控制器,可以将其添加到实用程序类中.
func constrainView(view:UIView, toView contentView:UIView) {
view.translatesAutoresizingMaskIntoConstraints = false
view.leadingAnchor.constraint(equalTo: contentView.leadingAnchor).isActive = true
view.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
view.trailingAnchor.constraint(equalTo: contentView.trailingAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5438 次 |
| 最近记录: |