Как изменить ограничение нижнего макета в iOS, Swift

У меня есть прокрутка в виде @IBOutlet

@IBOutlet weak var mainScrollView: UIScrollView!

Я хочу изменить

"Bottom space to: Bottom Layout Guide" 

программно.

First Item : Bottom Layout Guide.Top
Relation : Equal
Second Item: Scroll View.Bottom
Constant: 0 -> 50 // (I want to change this programmatically)
Priority: 1000
Multiplier: 1

Как я могу это сделать?

Ответ 1

Возьмите ограничение как IBOutlet NSLayoutConstraint.

enter image description here

Задайте выходы ограничения и измените значение constant на:

self.sampleConstraint.constant = 20
self.view.layoutIfNeeded()

Ответ 2

Если вы добавляете ограничение программно следующим образом:

var constraintButton = NSLayoutConstraint (item: buttonPlay, 
                                           attribute: NSLayoutAttribute.Bottom, 
                                           relatedBy: NSLayoutRelation.Equal, 
                                           toItem: self.view, 
                                           attribute: NSLayoutAttribute.Bottom, 
                                           multiplier: 1,
                                           constant: 0)
// Add the constraint to the view
self.view.addConstraint(constraintButton)

Затем вы можете обновить его следующим образом:

self.constraintButton.constant = 50
self.view.layoutIfNeeded()

И если вы хотите, чтобы с анимацией вы могли сделать это следующим образом:

self.view.layoutIfNeeded()
UIView.animateWithDuration(1, animations: {
    self.constraintButton.constant = 50
    self.view.layoutIfNeeded()
})

Надеюсь, что это поможет.

Ответ 3

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

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomContraint;

И когда вам нужно изменить его, вызовите:

bottomContstraint.constant = //your value
view.layoutIfNeeded()

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

bottomContstraint.constant = //your value

UIView.animateWithDuration(0.5, animations: {
  self.view.layoutIfNeeded()
})