web-dev-qa-db-ja.com

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

これどうやってするの?

16
Joon. P

IBOutletNSLayoutConstraintとして制約を取ります。

enter image description here

制約アウトレットを設定し、constant値を次のように変更します。

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

このようにプログラムで制約を追加する場合:

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()
})

それが役に立てば幸い。

19
Dharmesh

制約の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()
})
7
njuri