以编程方式更新 Main.storyboard 约束 (Swift)

Updating Main.storyboard constraints programatically (Swift)

我想将 textview 的底部锚点更新为与键盘出现时的高度相等的常量,这样它就不会覆盖 textView 中的文本。我在 Main.storyboard 中为我的 textView 设置了一个约束标识符为“bottomTextViewConstraint”,我们还有以下代码:

@objc func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
                    print("This prints")
            for constraint in self.textView.constraints {
                    print("This does not print")
                if constraint.identifier == "bottomTextViewConstraint" {
                    constraint.constant = keyboardSize.height
                    print("This does not print")
                }
            }
            textView.updateConstraints()
        }
    }
}

self.textView.constraints 为零...似乎以编程方式我无法访问我在情节提要中设置的内容。有什么想法吗?

文本视图的底部锚点与其父视图的底部锚点相关的约束将添加到文本视图的超级视图,因此您无法在[=12]中找到它=].

一个更简单的方法是从情节提要中添加一个 IBOutlet:

@IBOutlet var bottomConstraint: NSLayoutConstraint!

右键单击故事板中的视图控制器,然后将 bottomConstraint 连接到大纲视图中显示的约束:

然后您可以删除整个 for 循环并将其替换为:

bottomConstraint.constant = keyboardSize.height