【发布时间】:2016-06-07 11:56:25
【问题描述】:
我的故事板中有这个视图:
当我按下按钮时,视图需要动画。我想要的是带有占位符 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 是绿色背景的视图。
这是我按下按钮后得到的。
文本框必须更靠前。我怎样才能做到这一点?有没有办法回到我的故事板中的原始视图?
我想要的是:当用户点击动画必须触发的文本框时,他们可以在绿色区域下键入并获取相关的搜索结果。当用户选择表格中的一行时,它必须返回故事板中的视图并填写所选值。
**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
}
}
【问题讨论】:
-
试试
t2.frame = t1.frame和self.mview.frame.size.height = t2.frame.origin.y + t2.frame.size.height + 10(填充) -
@SunilSharma 谢谢,它几乎可以工作了。但是我的第二个文本框由文本框 1(隐藏的文本框)更改。你知道如何改变这种情况吗?
-
您的意思是如何再次显示文本框 1 和 2?
t1.frame = t2.frame和t2.frame.origin.y = t1.frame.origin.y + t1.frame.size.height + 10和self.myview.frame.size.height = t2.frame.origin.y + t2.frame.size.height + 10
标签: ios xcode swift uiviewanimation