Reputation: 2298
I have scroll view as @IBOutlet
@IBOutlet weak var mainScrollView: UIScrollView!
I want to change the
"Bottom space to: Bottom Layout Guide"
constraint programmatically.
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
How can I do this?
Upvotes: 18
Views: 40820
Reputation: 4391
Create an IBOutlet
for your constraint:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomContraint;
And when you need to change it call:
bottomContstraint.constant = //your value
view.layoutIfNeeded()
Also you can animate constraint change like that:
bottomContstraint.constant = //your value
UIView.animateWithDuration(0.5, animations: {
self.view.layoutIfNeeded()
})
Upvotes: 7
Reputation: 71854
If you are adding constraint programatically like this:
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)
Then you can update it this way:
self.constraintButton.constant = 50
self.view.layoutIfNeeded()
And if you want that with animation you can do it this way:
self.view.layoutIfNeeded()
UIView.animateWithDuration(1, animations: {
self.constraintButton.constant = 50
self.view.layoutIfNeeded()
})
Hope it helps.
Upvotes: 22
Reputation: 23882
Take the constraint as IBOutlet
of NSLayoutConstraint
.
Set the constraint outlets and change constant
value by :
self.sampleConstraint.constant = 20
self.view.layoutIfNeeded()
Upvotes: 36