web-dev-qa-db-fra.com

Comment changer la contrainte de mise en page inférieure dans iOS, Swift

J'ai une vue de défilement en tant que @IBOutlet

@IBOutlet weak var mainScrollView: UIScrollView!

Je veux changer le

"Bottom space to: Bottom Layout Guide" 

contrainte par programme.

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

Comment puis-je faire ceci?

16
Joon. P

Prenez la contrainte comme IBOutlet de NSLayoutConstraint.

enter image description here

Définissez les sorties de contrainte et modifiez la valeur de constant en:

self.sampleConstraint.constant = 20
self.view.layoutIfNeeded()
31
Ashish Kakkad

Si vous ajoutez une contrainte par programme comme ceci:

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)

Ensuite, vous pouvez le mettre à jour de cette façon:

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

Et si vous le souhaitez avec l'animation, vous pouvez le faire de cette façon:

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

J'espère que cela aide.

19
Dharmesh

Créez un IBOutlet pour votre contrainte:

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

Et lorsque vous devez le changer, appelez:

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

Vous pouvez également animer un changement de contrainte comme ça:

bottomContstraint.constant = //your value

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