更改视图并在自动布局后将其更改为原始视图 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
}
}
这是我的建议:
- 从 mview(绿色视图)中删除高度限制
- 为 t1 添加高度限制
- 在t1和t2之间添加垂直距离约束
- 添加垂直约束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
的值
希望对您有所帮助
我的故事板中有这个视图:
当我按下按钮时,视图需要动画。我想要的是带有占位符 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
}
}
这是我的建议:
- 从 mview(绿色视图)中删除高度限制
- 为 t1 添加高度限制
- 在t1和t2之间添加垂直距离约束
- 添加垂直约束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
希望对您有所帮助