更改动作视图的布局锚点
changing layout anchors of view on an action
我有一个 upperLabel,一个视图和一个按钮。
在ViewDidLoad()
方法中,我对视图进行了一些布局约束。点击按钮我需要更新这些约束(即视图应该向下移动)。我该怎么做。
这是我的代码。但它不起作用。
let keyView = UIView()
override func viewDidLoad() {
keyView.frame = CGRect(x: 0, y: 0, width: 100, height: 30)
keyView.backgroundColor = UIColor.cyan
keyView.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(keyView)
keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor , constant: 10).isActive = true
keyView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 20).isActive = true
keyView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -20).isActive = true
keyView.bottomAnchor.constraint(equalTo: keyView.topAnchor, constant: keyView.frame.size.height).isActive = true
}
该动作中的代码如下。
func buttonAction(sender: UIButton!) {
keyView.translatesAutoresizingMaskIntoConstraints = false
keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor, constant: CGFloat(i*50))
keyView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 20)
keyView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -20)
keyView.bottomAnchor.constraint(equalTo: keyView.topAnchor, constant: keyView.frame.size.height)
i + =1
}
根据上面的代码,keyView 应该在点击按钮时向下移动。但它并没有向下移动。
请帮帮我。
提前致谢。
取一个NSLayoutConstraint类型的全局变量如下..
var keyViewTopConstraint: NSLayoutConstraint?
现在在 viewDidLoad 中给出初始约束。给出如下
keyViewTopConstraint = keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor , constant: 10)
keyViewTopConstraint?.isActive = true
现在在那个动作中。删除初始约束并创建另一个约束并将其激活。为此,请执行以下操作
keyViewTopConstraint?.isActive = false
keyViewTopConstraint = keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor, constant: CGFloat(i*50))
keyViewTopConstraint?.isActive = true
我有一个 upperLabel,一个视图和一个按钮。
在ViewDidLoad()
方法中,我对视图进行了一些布局约束。点击按钮我需要更新这些约束(即视图应该向下移动)。我该怎么做。
这是我的代码。但它不起作用。
let keyView = UIView()
override func viewDidLoad() {
keyView.frame = CGRect(x: 0, y: 0, width: 100, height: 30)
keyView.backgroundColor = UIColor.cyan
keyView.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(keyView)
keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor , constant: 10).isActive = true
keyView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 20).isActive = true
keyView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -20).isActive = true
keyView.bottomAnchor.constraint(equalTo: keyView.topAnchor, constant: keyView.frame.size.height).isActive = true
}
该动作中的代码如下。
func buttonAction(sender: UIButton!) {
keyView.translatesAutoresizingMaskIntoConstraints = false
keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor, constant: CGFloat(i*50))
keyView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 20)
keyView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -20)
keyView.bottomAnchor.constraint(equalTo: keyView.topAnchor, constant: keyView.frame.size.height)
i + =1
}
根据上面的代码,keyView 应该在点击按钮时向下移动。但它并没有向下移动。
请帮帮我。 提前致谢。
取一个NSLayoutConstraint类型的全局变量如下..
var keyViewTopConstraint: NSLayoutConstraint?
现在在 viewDidLoad 中给出初始约束。给出如下
keyViewTopConstraint = keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor , constant: 10)
keyViewTopConstraint?.isActive = true
现在在那个动作中。删除初始约束并创建另一个约束并将其激活。为此,请执行以下操作
keyViewTopConstraint?.isActive = false
keyViewTopConstraint = keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor, constant: CGFloat(i*50))
keyViewTopConstraint?.isActive = true