2015-01-31 5 views
4

Я пытаюсь настроить ширину UIButton, используя этот код:Как создать программные ограничения в Swift?

constraintButtonPlayWidth = NSLayoutConstraint(item: buttonPlay, 
     attribute: NSLayoutAttribute.Width, 
     relatedBy: NSLayoutRelation.Equal, 
     toItem: self.view, 
     attribute: NSLayoutAttribute.Width, 
     multiplier: 1, 
     constant: 100) 
self.view.addConstraint(constraintButtonPlayWidth) 

Но кнопка получает растягивается слишком много; вероятно, потому, что toItem: self.view. Я попытался изменить константу ограничения, но это ничего не изменило.

Как правильно настроить это ограничение, чтобы оно на самом деле имело ширину 100?

ответ

21

Вы были близки. Ограничение должно иметь только один элемент, поскольку оно не относится к другому элементу.

constraintButtonPlayWidth = NSLayoutConstraint (item: buttonPlay, 
    attribute: NSLayoutAttribute.Width, 
    relatedBy: NSLayoutRelation.Equal, 
    toItem: nil, 
    attribute: NSLayoutAttribute.NotAnAttribute, 
    multiplier: 1, 
    constant: 100) 
self.view.addConstraint(constraintButtonPlayWidth) 
+0

Спасибо большое! Хотя код в моем ответе работает отлично, ваш более точный. – Cesare

1

toItem должен быть установлен на ноль, так что ваш код выглядит следующим образом:

constraintButtonPlayWidth = NSLayoutConstraint (item: buttonPlay, 
    attribute: NSLayoutAttribute.Width, 
    relatedBy: NSLayoutRelation.Equal, 
    toItem: nil, 
    attribute: NSLayoutAttribute.Width, 
    multiplier: 1, 
    constant: 100) 
self.view.addConstraint(constraintButtonPlayWidth) 
+1

Это может также работать, но второй атрибут должен действительно быть установлен в 'NSLayoutAttribute.NotAnAttribute' – picciano

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