更改视图并在自动布局后将其更改为原始视图 xcode

Change view and change it the the original later after autolayout xcode

我的故事板中有这个视图:

当我按下按钮时,视图需要动画。我想要的是带有占位符 1 的文本框消失了。带有占位符 2 的文本框必须浮动到第一个文本框的位置,并且视图(绿色背景)必须获得不同的高度。之后需要改回这个视图。

我有这个代码:

import UIKit

class ViewController : UIViewController, UISearchBarDelegate {

    @IBOutlet weak var heightView: NSLayoutConstraint!
    @IBOutlet weak var tlabel: UILabel!
    @IBOutlet weak var mview: UIView!
    @IBOutlet weak var t2: UITextField!

    @IBOutlet weak var t1: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func test(sender: AnyObject) {
        self.mview.translatesAutoresizingMaskIntoConstraints = false;
        self.t2.translatesAutoresizingMaskIntoConstraints = false;

        UIView.animateWithDuration(0.5, animations: {
            self.mview.frame = CGRectMake(0, 0, 320, 80);

self.t2.frame = CGRect(x: 20, y: 0, width: 10, height: 80);
            })

            self.t1.hidden = true
    }
}

t1 是第一个文本框,t2 第二个。 mview 是绿色背景的视图。

这是我按下按钮后得到的结果。

文本框必须更靠前。我怎样才能做到这一点?有没有办法回到我的情节提要中的原始视图?

我想要的是:当用户点击文本框时必须触发动画,他们可以在绿色区域下键入并获得相关的搜索结果。当用户在 table 中选择一行时,它必须返回故事板中的视图并填写所选值。

**Found the solution:**
import UIKit

class ViewController : UIViewController, UISearchBarDelegate {
    var c1 : CGFloat = 0;
    var c2 : CGFloat = 0;

    @IBOutlet weak var mview: UIView!
    @IBOutlet weak var t1: UITextField!
    @IBOutlet weak var t2: UITextField!


    @IBOutlet weak var vcc: NSLayoutConstraint!
    @IBOutlet weak var jj: NSLayoutConstraint!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func test(sender: AnyObject) {
        c1 = self.jj.constant;
        c2 = self.vcc.constant

        self.jj.constant = 0;
        self.vcc.constant = 80
    }

    @IBAction func original(sender: AnyObject) {
         self.vcc.constant = c2
        self.jj.constant = c1

    }
}

这是我的建议:

  1. 从 mview(绿色视图)中删除高度限制
  2. 为 t1 添加高度限制
  3. 在t1和t2之间添加垂直距离约束
  4. 添加垂直约束t2的底部和mview的底部

然后

@IBAction func test(sender: AnyObject) {
    self.t1.heightConstraint.constant = 0
    self.view.setNeedsLayout()
    UIView.animateWithDuration(0.5, animations: {
        self.view.layoutIfNeeded()
    })
}

如果要返回原点视图,请更改self.t1.heightConstraint.constant

的值

希望对您有所帮助