制約を更新する必要がある場合
そこであなたは、このいずれかを試すことができます。私はまだ試していない。最初に、束縛された束縛を必要とするか、またはすべてをループスルーして必要なものを見つける必要があります。あなたはこれを使うことができます。
var constraint: NSLayoutConstraint! = nil
let constraints = myButton.constraintsAffectingLayoutForAxis(UILayoutConstraintAxis.Horizontal)
またはすべての制約が適用されます。
var constraint: NSLayoutConstraint! = nil
次に、それらをループして、このように必要なものを見つける必要があります。
for const in myButton.constraints {
if const.firstAttribute == NSLayoutAttribute.Width {
constraint = const
break
}
}
幅制約の
最初の属性は常に「幅」として設定し、また、あなたは制約が最初の項目なぜならif節
const.firstItem as! NSObject == myButton
に適用されている項目については、以下のような追加のチェックを入れることができます幅の制約のそれ自体です。 try if works。 試してください。それを見つけたら、特定の制約を削除し、新しい制約を追加することをお勧めします。下の項目に幅の制約を追加するには、コードを使用します。あなたが望む幅が50ピクセルだとします。
myButton.addConstraint(NSLayoutConstraint(item: myButton, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 50.0))
これは正しいアプローチです。それを有効または無効にしないでください。
なぜ、古い幅の制約への参照がありませんか?デフォルトでは、ボタンの幅がコンテンツを抱きしめるので、幅の制約はまったく必要ありません。水平中心とおそらく最大幅を設定します。 – Paulw11
パラメータを再構築する汎用メソッド、この場合はUIButtonを作成しようとしています。アンカーのすべての制約を照会するといいでしょう。 – andrewz