2016-05-15 1 views
0

Я установил следующее ограничение программно на UISwitch, который был установлен в качестве IBOutlet:X Позиция Constraint Не Обновление Программным - Swift в Xcode

func setConstraints { 
    let leadingConstraintTimeSwitch1 = NSLayoutConstraint(item: timeSwitch, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: timeLabel, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 10) 
    view.addConstraint(leadingConstraintTimeSwitch1) 

Всякий раз, когда я изменить константу этого ограничения, положение Х переключатель остается тем же. Однако, когда я перехожу к Инспектору размеров коммутатора и изменяю его значение X, позиция переключателя делает правильно, но я не хочу использовать Size Inspector. Как я могу заставить программный набор ограничений переопределить значение X в инспекторе размеров? Я также добавил ограничение, определяющее позицию Y переключателя (нижнее ограничение), и этот делает работы. Благодаря!

ответ

0

Там не много информации, чтобы перейти от в описании ..

Я обычно добавляю свои ограничения, например, так:

NSLayoutConstraint(item: timeSwitch, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: timeLabel, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 10).active = true 

является timeSwitch и timeLabel части иерархии представления?

Вы установили translatesAutoresizingMaskIntoConstraints на false?

Есть ли еще какие-либо ограничения в игре, которые могут повлиять на него?

+0

'timeSwitch' и' timeLabel' являются частью иерархии представлений, я задал 'translatesAutoresizingMaskIntoConstraints' значение false, и у меня есть много других объектов с ограничениями, которые работают полностью нормально. Я не вижу, как могут быть другие ограничения, которые могут повлиять на него. Как я уже сказал, в инспекторе размеров, когда я изменяю значение X, переключатель переключается на позицию этого значения X, но программное ограничение не отменяет этого. Благодаря! –

+0

как вы меняете константу? – Scriptable

+0

Изменяя константу в 'let leadingConstraintTimeSwitch1 = NSLayoutConstraint (item: timeSwitch, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: timeLabel, атрибут: NSLayoutAttribute.Trailing, multiplier: 1, constant: 10)' @Scriptable –