使用自动布局约束从中心到顶部为 UIView 设置动画 swift 2.1

Animate UIView from center to top using autolayout constraings swift 2.1

我想在单击按钮时将 UITextField 从中心到视图顶部设置动画。 TextField 具有以下约束

以下是点击按钮将文本文件移动到顶部的代码。

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

上面的代码有效,textfield 移到了顶部,但是当我返回并再次来到这个视图时,textfield 再次位于中心。我是 swift 的新手,我希望将文本字段移至顶部后,它应该保持在顶部。

您应该在代码中获得对约束的引用。然后您改为更改约束的常量值。

我在 viewDidLoad 中添加了将文本字段移动到顶部的代码,但您当然会在按钮操作中包含此代码。您必须从 "Align Center Y" 拖到视图控制器中才能创建对约束的引用。我减去 10 的原因是因为您的示例和意图是与顶部有 10 个点的余量。请注意,我 "reversed" 第一项和第二项是这样的:

请记住,当您使用自动布局时,框架和中心以及视图边界的大小由自动布局约束设置。

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
    }

    }
}