У меня есть этот вид в моем раскадровки:Изменить вид и изменить его оригинал позже после 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 - это вид с зеленым фоном.
Это то, что я получаю после того, как я нажал кнопку.
Текстовое поле должно быть больше в верхней части. Как я могу это сделать? И есть ли способ вернуться к первоначальному виду в моей раскадровке?
Что я хочу, так это: когда пользователь нажимает на текстовое поле, анимация должна срабатывать, они могут печатать и получать связанные результаты поиска под зеленой зоной. Когда пользователь выбирает строку в таблице, она должна вернуться к представлению в раскадровке и заполнить выбранное значение.
**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' (padding) –
@SunilSharma Спасибо, он почти работает. Но мое второе текстовое поле изменяется текстовым полем 1 (скрытое текстовое поле). Знаете ли вы, как это изменить? – da1lbi3
Вы имеете в виду, как показать и текстовое поле 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' –