gpt4 book ai didi

ios - 为什么我不能将在 viewDidLoad 方法中创建的 View 约束到 ViewControllers View ?

转载 作者:行者123 更新时间:2023-11-28 10:56:23 28 4
gpt4 key购买 nike

以下是我在我的 ViewController 中初始化一个 UIView 然后将其约束到 ViewController 的主视图后收到的错误消息。

无法激活带有 anchor 的约束,因为它们没有共同的祖先。约束或其 anchor 是否引用不同 View 层次结构中的项目?这是非法的。

enter image description here

如果您查看我提供的图片,您会发现在 Storyboard 中我可以在主视图中放置另一个 UIView,然后我可以将它限制在主视图的边缘。这工作得很好,但我想知道如何在代码中做同样的事情。仅使用 NSLayoutConstraint 并将其固定到顶部、底部、前导和尾部似乎对我不起作用。任何对此的见解都会很棒。

    let webView: WKWebView = WKWebView()

override func viewDidLoad() {
super.viewDidLoad()

webView.translatesAutoresizingMaskIntoConstraints = false

NSLayoutConstraint(item: webView,
attribute: .leading,
relatedBy: .equal,
toItem: view,
attribute: .leading,
multiplier: 1.0,
constant: 0.0).isActive = true

NSLayoutConstraint(item: webView,
attribute: .trailing,
relatedBy: .equal,
toItem: view,
attribute: .trailing,
multiplier: 1.0,
constant: 0.0).isActive = true

NSLayoutConstraint(item: webView,
attribute: .top,
relatedBy: .equal,
toItem: view,
attribute: .top,
multiplier: 1.0,
constant: 0.0).isActive = true

NSLayoutConstraint(item: webView,
attribute: .bottom,
relatedBy: .equal,
toItem: view,
attribute: .bottom,
multiplier: 1.0,
constant: 0.0).isActive = true

let url = NSURL (string: someURL);
let requestObj = NSURLRequest(url: url! as URL);
webView.load(requestObj as URLRequest);
}

最佳答案

在添加约束之前,您似乎忘记将 webView 添加到 view 中:

view.addSubview(webView)

最终代码:

webView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(webView)

NSLayoutConstraint(item: webView,
attribute: .leading,
relatedBy: .equal,
toItem: view,
attribute: .leading,
multiplier: 1.0,
constant: 0.0).isActive = true

NSLayoutConstraint(item: webView,
attribute: .trailing,
relatedBy: .equal,
toItem: view,
attribute: .trailing,
multiplier: 1.0,
constant: 0.0).isActive = true

NSLayoutConstraint(item: webView,
attribute: .top,
relatedBy: .equal,
toItem: view,
attribute: .top,
multiplier: 1.0,
constant: 0.0).isActive = true

NSLayoutConstraint(item: webView,
attribute: .bottom,
relatedBy: .equal,
toItem: view,
attribute: .bottom,
multiplier: 1.0,
constant: 0.0).isActive = true

let url = NSURL (string: "");
let requestObj = NSURLRequest(url: url! as URL);
webView.load(requestObj as URLRequest);

关于ios - 为什么我不能将在 viewDidLoad 方法中创建的 View 约束到 ViewControllers View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43219849/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com