2016-06-07 2 views
0

У меня есть этот вид в моем раскадровки:Изменить вид и изменить его оригинал позже после autolayout Xcode

enter image description here

Когда я нажимаю на кнопку взгляд нужно анимировать. Я хочу, чтобы текстовое поле с заполнителем 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 - это вид с зеленым фоном.

enter image description here

Это то, что я получаю после того, как я нажал кнопку.

Текстовое поле должно быть больше в верхней части. Как я могу это сделать? И есть ли способ вернуться к первоначальному виду в моей раскадровке?

Что я хочу, так это: когда пользователь нажимает на текстовое поле, анимация должна срабатывать, они могут печатать и получать связанные результаты поиска под зеленой зоной. Когда пользователь выбирает строку в таблице, она должна вернуться к представлению в раскадровке и заполнить выбранное значение.

**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 

    } 
} 
+0

попробовать 't2.frame = t1.frame' и' self.mview .frame.size.height = t2.frame.origin.y + t2.frame.size.height + 10' (padding) –

+0

@SunilSharma Спасибо, он почти работает. Но мое второе текстовое поле изменяется текстовым полем 1 (скрытое текстовое поле). Знаете ли вы, как это изменить? – da1lbi3

+0

Вы имеете в виду, как показать и текстовое поле 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' –

ответ

1

Это мое предложение:

  1. удалить ограничение высоты от MView (зеленый вид)
  2. добавить ограничение высоты до t1
  3. добавить вертикальное расстояние ограничение между t1 и t2
  4. добавить вертикальное ограничение дно t2 и нижнее нижнее нижнее поле

затем

@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

надеюсь, что это полезно

+0

возможно self.view.setNeedsLayout() не обязательно –

+0

Большое спасибо! Он работает почти, и решение мне очень понятно. Я хочу, чтобы t2 немного двинулся вверх. Возможно ли это также с ограничениями? Поскольку t2 не находится на месте t1, а заголовок перемещается немного ниже. – da1lbi3

+0

Решил. Спасибо! – da1lbi3

Смежные вопросы