2016-01-13 9 views
-3

enter image description hereметод viewWillAppear не работает

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var family_name: UITextField! 
    @IBOutlet weak var given_name: UITextField! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 
    override func viewWillAppear(animated: Bool) { 
     family_name.center.x -= view.bounds.width 
     given_name.center.x -= view.bounds.width 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

viewWillAppear не имеет никакого эффекта. Когда я запускаю приложение, оба текстовых поля не должны быть видимыми, но они есть. Я прикрепил фотографию с ограничениями; Я думаю, что это может быть проблемой!

+0

Вы не можете изменить рамку (или центр) представления при использовании AutoLayout. В Stack Overflow есть много вопросов, которые показывают различные способы обойти это. Теперь вы знаете, в чем проблема (AutoLayout и движущиеся виды), вы должны найти решение: D – Fogmeister

+0

Fogmeister прав, вы должны изменить ограничения в своем коде для достижения этого. – Kelo

+0

Я пытался без ограничений, но результат тот же! – Cristian

ответ

0

Вы используете autolayout, поэтому смена рамки не применима. ваши ограничения будут перезаписывать значения кадров после viewWillAppear:

Создайте IBOutlet для ограничения ограничений или ограничений вашего текста.

Проверьте изображение образца для создания IBOutlet ограничения. enter image description here

В приведенном выше изображении я создаю выход ограничения высоты.

Чтобы отправить textField за пределы представления, предположим, что вы создали правильное ограничение.

//suppose initial value of right constraint is 20 
constraintTextView1Right.constant = 20 + self.view.bounds.width; 
self.view.layoutIfNeeded();//forcefully apply constraint with new values 

После этого, в какой-то момент нажатия кнопки или в другом случае или после некоторой задержки, вы можете изменить значение constraintTextView1Right 20,

constraintTextView1Right.constant = 20 
self.view.layoutIfNeeded();//forcefully apply constraint with new values 

ваш textFiled придет на экране.

Чтобы оживить это же, вы можете написать ниже код.

constraintTextView1Right.constant = 20 
UIView.animateWithDuration(0.3) {() -> Void in 
      self.view.layoutIfNeeded();//forcefully apply constraint with new values 
     } 
Смежные вопросы