简体   繁体   中英

Animate UIView from center to top using autolayout constraings swift 2.1

I want to animate UITextField from center to top of the view on a button click. TextField has following constraints

在此处输入图片说明

Following is the code to on button click to move textfiled to top.

 UIView.animateWithDuration(0.5) {
   self.txtfield.center.y = 10
  }

above code works, textfiled moved to top but when I go back and come to this view again textfield is again in center. I am new to swift I want that once textfield is moved to top it should stay on top.

You should get a reference to the constraint in your code. Then you change the constant value of the constraint instead.

I have added the code to move the text field to top in viewDidLoad but you will of course have this code in your button action. You have to drag from the "Align Center Y" and into your view controller in order to create a reference to the constraint. The reason why I subtract 10 is because your example and intention was to have a 10 points margin from the top. And take note that I "reversed" the first and second item like this:

在此处输入图片说明

Remember that when you use auto layout, the frame and center and the size of the views bounds get set by auto layout constraints.

class ViewController: UIViewController {

    @IBOutlet weak var textFieldYAlignConstraint: NSLayoutConstraint!
    @IBOutlet weak var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

         UIView.animateWithDuration(1.2) { () -> Void in
        self.centeraligntConstraint.constant = -400
        self.view.layoutIfNeeded()// to animate layout constraint
    }

    }
}

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM