2016-04-19 15 views
0

ねえ、私はこのようなセットアップを持っている:トラブル調整の制約は、プログラム

enter image description here

左制約は、私が20にこの制約を変更し、箱の長さを増やしたい111の定数です。現在、私は持っている:私はもともとleadingConstraint = NSLayoutConstraint(item: view.superview!, attribute: .Leading, relatedBy: .Equal, toItem: greenView, attribute: .Trailing, multiplier: 1.0, constant:20)でエラーが発生しました

@IBAction func didTapButton(sender: AnyObject) { 

     view.removeConstraint(leadingConstraint) 
     leadingConstraint = NSLayoutConstraint(item: view.superview!, attribute: .Leading, relatedBy: .Equal, toItem: greenView, attribute: .Leading, multiplier: 1.0, constant:20) 
     view.addConstraint(leadingConstraint) 

    } 

。だから私はそれを両方の属性の.Leadingと.Leadingに変更しました。今矩形が伸びているが、それは正しいサイズではありません、それは画面をオフに起こっている:

enter image description here

私はここで間違って何をしているのですか? (注:定数を変更するだけでなく、新しい制約を追加することで、これらの制約を変更したいと思っています。これについてのあらゆる指針は非常に高く評価されるでしょう!おかげ

+0

これはあなたの質問に対する答えではありませんが、将来のための良い提案です: 'view.addConstraint(someConstraints)'をこれまでに使用しないでください!代わりに 'NSLayoutConstraint.activateConstraints(someConstraints)'または 'someConstraint.active = true'を使用してください – DevAndArtist

答えて

1

は私がやるべき方法は次のとおりです。

絵コンテ:

  • 2つの制約(第1の状態と、一端に1つに1つ)を作成します。
  • 各制約の優先度を変更します。最初のものは2番目のものより高くなければなりませんが、最初のものは1000ではありません。最初のものは751、2番目のものは749としましょう。
  • 各制約に対してIBOutletを作成します。

コード:

  • 変更各制約の優先順位(firstConstraint.priority = 749、secondConstraint.priority = 751)。
  • view.layoutIfNeeded()を実行します。
  • これらはすべてメインスレッドで実行する必要があります。

希望します。

1

の代わりに20を使用するか、leadingConstraintを設定するときにビューを交換してください。

+0

はい、-20に変更してください。また、制約を追加/削除する代わりに、その制約を有効/無効にすることもできます。 – OutOnAWeekend

関連する問題