我正在制作一个注册屏幕,并希望更新一些顶部锚点,以便在出现键盘时,顶部锚点常数减小,并且键盘不覆盖任何文本字段。
我创建了一个topConstant变量:
var constraintConstant: CGFloat = 35
并按照以下步骤设置我的观点:
view.addSubview(passwordTextField)
passwordTextField.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 25).isActive = true
passwordTextField.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -25).isActive = true
passwordTextField.heightAnchor.constraint(equalToConstant: 50).isActive = true
passwordTextField.topAnchor.constraint(equalTo: emailTextField.bottomAnchor, constant: constraintConstant).isActive = true
然后我编写了这段代码:
func textFieldDidBeginEditing(_ textField: UITextField) {
constraintConstant = 15
view.layoutIfNeeded()
}
我不确定为什么有害对象没有更新。有什么想法吗?
答案 0 :(得分:0)
您需要
$articlecomment = new Article_comment();
$articlecomment->user_id = Auth::user()->id;//Comment by user id
$articlecomment->article_id = $request->articleid;
$articlecomment->comment = $request->comment;
$articlecomment->save();
auth()->user()->notify(new ArticleNotification($articlecomment));
//$articlecomment->user()->notify(new ArticleNotification($articlecomment));
//
var topCon:NSLayoutConstraint!
//
topCon = passwordTextField.topAnchor.constraint(equalTo: emailTextField.bottomAnchor, constant: constraintConstant)
topCon.isActive = true
答案 1 :(得分:0)
好的。我第一次使用Swift在iOS上开始时遇到了这个问题。看到问题出在您对锚的理解上。
您指定的常数不能像您期望的那样起作用。 (您期望它像某种侦听器一样工作,它将根据变量值的更新不断更新。它不是。)它只会在设置时获取变量的值,然后不再显示返回,除非您访问该锚点并手动更改常数。
这就是为什么您必须存储锚的实例并像这样每年更改常量的原因。
定义约束变量:
var topAnchorConstraint: NSLayoutConstraint!
将适当的约束存储在变量中
topAnchorConstraint = passwordTextField.topAnchor.constraint(equalTo: emailTextField.bottomAnchor, constant: 35)
topAnchorConstraint.isActive = true
现在您需要根据需要更改常数。
func textFieldDidBeginEditing(_ textField: UITextField) {
UIView.animate(withDuration: 1.0, animations: {
self.topAnchorConstraint.constant = 15
self.view.layoutIfNeeded()
}, completion: nil)
}