Я нахожу, что ограничения не реализованы, исправляя при типичном наборе программных типов существующих представлений на досках рассказов. вот что у меня есть:Программно добавляя NSConstraints к существующим представлениям на раскадровки
class ViewController: UIViewController {
@IBOutlet weak var textField2: UITextField! {
didSet {
textField2.delegate = self
}
}
func viewDidLoad() {
super.viewDidLoad()
let superview = self.view
let textField1 = UITextField()
textField1.backgroundColor = UIColor.greenColor()
textField1.placeholder = "test text field"
view.addSubview(textField1)
textField1.translatesAutoresizingMaskIntoConstraints = false
superview.addConstraint(NSLayoutConstraint(item: textField1, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .Width, multiplier: 1, constant: superview.frame.width * 0.50))
superview.addConstraint(NSLayoutConstraint(item: textField1, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .Height, multiplier: 1, constant: superview.frame.height * 0.05))
superview.addConstraint(NSLayoutConstraint(item: textField1, attribute: .CenterX, relatedBy: .Equal, toItem: superview, attribute: .CenterX, multiplier: 1, constant: 0))
superview.addConstraint(NSLayoutConstraint(item: textField1, attribute: .CenterY, relatedBy: .Equal, toItem: superview, attribute: .CenterY, multiplier: 1, constant: 0))
textField2.translatesAutoresizingMaskIntoConstraints = false
superview.addConstraint(NSLayoutConstraint(item: textField2, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .Width, multiplier: 1, constant: superview.frame.width * 0.50))
superview.addConstraint(NSLayoutConstraint(item: textField2, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .Height, multiplier: 1, constant: superview.frame.height * 0.05))
superview.addConstraint(NSLayoutConstraint(item: textField2, attribute: .CenterX, relatedBy: .Equal, toItem: superview, attribute: .CenterX, multiplier: 1, constant: 0))
superview.addConstraint(NSLayoutConstraint(item: textField2, attribute: .CenterY, relatedBy: .Equal, toItem: superview, attribute: .CenterY, multiplier: 1, constant: 0))
}
}
textField1
работает отлично. он добавляется в центр представления. однако textField2
, который я перетащил и бросил на раскадровку, смещен от центра. почему это происходит?
благодаря
Смотрите также мой ответ на этот вопрос, который на самом деле точно такой же вопрос: http://stackoverflow.com/questions/35421925/scrunched-layout – matt
спасибо за ваш ответ – Alex