2016-05-18 4 views
8

Как изменить множитель ограничения с помощью Swift.iOS - Измените множитель ограничения на Swift

someConstraint.multiplier = 0.6 // error: 'multiplier' is get-only property 

Я хотел бы знать, как изменить множитель в коде (Swift).

+2

создать несколько Сдерживает с различными множителями и активировать/деактивировать правильные в нужное время. – luk2302

+8

http://stackoverflow.com/questions/19593641/can-i-change-multiplier-property-for-nslayoutconstraint –

ответ

30

С multiplier - свойство только для чтения, и вы не можете его изменить, вам нужно заменить ограничение его модифицированным клоном.

Вы можете написать расширение, чтобы сделать это, как:

extension NSLayoutConstraint { 
    func constraintWithMultiplier(_ multiplier: CGFloat) -> NSLayoutConstraint { 
     return NSLayoutConstraint.constraintWithItem(self.firstItem, attribute: self.firstAttribute, relatedBy: self.relation, toItem: self.secondItem, attribute: self.secondAttribute, multiplier: multiplier, constant: self.constant) 
    } 
} 

Swift 3.0+ Версия:

Использование:

var newConstraint = self.constraintToChange.constraintWithMultiplier(0.75) 
self.view!.removeConstraint(self.constraintToChange) 
self.view!.addConstraint(self.constraintToChange = newConstraint) 
self.view!.layoutIfNeeded() 
+1

Большое спасибо за ваш ответ! Я пытаюсь сделать ваш код. Но я не могу достичь того, чего хочу, из-за 'self.view!'. Я исправил 'self.view!' В моем случае. Но я использую способ г-на Эндрю Шрайбера в существующем «Могу ли я изменить свойство множителя для NSLayoutConstraint?» Это хорошо работает. Мне нужно было искать его больше. – redstone

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