title: How to update anchor constraint in swift
body: <p>I would like to create a menu like android in iOS. I'm using <strong>layout constraints</strong> to setup <strong>constraints</strong>. I'm facing the issue when I'm trying to update the left <strong>constraint</strong> of an image on button click (It should animate to clicked button's position). Can anyone help me?
  It should support landscape and portrait. </p>
  
  <p>I don't want to user third party code and don't want to use the <strong><code>NSLayoutconstraint</code></strong>. </p>
  
  <p><a href="https://i.stack.imgur.com/3AmAJ.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/3AmAJ.png" alt="Landscape image"></a>
  <a href="https://i.stack.imgur.com/ilhHN.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ilhHN.png" alt="Potrait Image"></a></p>
  
  <p>Here is my code. </p>
  
  <pre><code>class MenuViewController: UIViewController {
              var buttons: [UIButton] = []
              var imageView : UIImageView!
  
              override func viewDidLoad() {
                  super.viewDidLoad()
              }
  
              override func viewDidAppear(_ animated: Bool) {
                  super.viewDidAppear(animated)
                  addMenuItems()
              }
  
              func addMenuItems() {
  
                  for _ in 0...4 {
                      let button : UIButton = UIButton()
                      self.view.addSubview(button)
                      button.backgroundColor = UIColor.darkGray
                      button.addTarget(self, action: #selector(didSelectedButton(_:)), for: .touchUpInside)
                      self.buttons.append(button)
  
                  }
  
                  for (index, button) in buttons.enumerated() {
  
                      button.setTitle(" \(index)", for: .normal)
                      if index == 0 {
                          button.translatesAutoresizingMaskIntoConstraints = false
                          button.leftAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leftAnchor, constant: 0).isActive = true
                          button.widthAnchor.constraint(greaterThanOrEqualToConstant: 1).isActive = true
                          button.heightAnchor.constraint(equalToConstant: 50).isActive = true
                          button.topAnchor.constraint(equalTo: self.view.topAnchor, constant:200).isActive = true
  
                          self.imageView = UIImageView()
                          self.view.addSubview(self.imageView)
                          self.imageView.backgroundColor = UIColor.red
  
                          self.imageView.translatesAutoresizingMaskIntoConstraints = false
                          self.imageView.leftAnchor.constraint(equalTo: button.leftAnchor, constant: 0).isActive = true
                          self.imageView.widthAnchor.constraint(equalTo: button.widthAnchor, multiplier: 1).isActive = true
                          self.imageView.heightAnchor.constraint(equalToConstant: 4).isActive = true
                          self.imageView.topAnchor.constraint(equalTo: self.view.topAnchor, constant:250).isActive = true
  
                      }
                      else {
  
                          let preButton = buttons\[index - 1\]
                          button.translatesAutoresizingMaskIntoConstraints = false
                          button.leftAnchor.constraint(equalTo: preButton.rightAnchor, constant: 0).isActive = true
                          button.widthAnchor.constraint(equalTo: preButton.widthAnchor, multiplier: 1).isActive = true
                          button.heightAnchor.constraint(equalToConstant: 50).isActive = true
                          button.topAnchor.constraint(equalTo: self.view.topAnchor, constant:200).isActive = true
                          if index == self.buttons.count - 1 {
                              button.rightAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.rightAnchor, constant: 0).isActive = true
                          }
                      }
  
                  }
  
              }
  
              @objc func didSelectedButton(_ button:UIButton) {
                  UIView.animate(withDuration: 1, animations: {
                      self.imageView.leftAnchor.constraint(equalTo: button.leftAnchor).isActive = true
                      self.imageView.layoutIfNeeded()
                  }, completion: nil)
              }
  
          }
  </code></pre>