2017-01-19 11 views
0

EDIT:定数ではなく乗数を変更する必要があるようです。単一のIB制約の単純なプログラムによる変更が更新されない

私は、特定のイベントが発生した後、viewDidLoad以外のボタンの幅をプログラムで変更しようとしています(問題がある場合)。

IBのボタンの幅をViewsの幅と同じに設定しました。

私は、ボタンの幅の制約のためにIBのアウトレットを作成しました:

@IBOutlet weak var imageButtonWidth: NSLayoutConstraint! 

は、次に私が試してみた:

imageButtonWidth.constant = 0.49 
    view.setNeedsLayout() 

imageButtonWidth.constant = 0.49 
    view.layoutIfNeeded() 

imageButtonWidth.constant = 0.49 
    self.view.updateConstraints() 

私はimageButtonWidth.constant = 0.49でブレークポイントを設定しました。アプリケーションをクラッシュさせて、 "正常に動作していない"ということを知っています。

ノー問題と別のアプリケーション上でのviewDidLoadで

imageButtonWidth.constant = 0.49 
    self.view.updateConstraints() 

を使用しましたが、コールが外のviewDidLoadされている場合、それは認められないだろうと思われます。

アドバイスをいただければ幸いです!

self.view.layoutIfNeeded() 

制約を更新することができますが、おそらく制約の値が低いように思わので、それはそう間違ってコンセントを接続して

+0

幅の定数0.49を指定すると、ボタンの幅が1ポイント未満になります。それが正しい価値だと確信していますか?コンソールに制約エラーがありますか? – jrturton

+0

エラーはありません。ビューの半分よりも少し小さく、表示するボタンの幅が全く同じ場合は1の定数になります。応答に感謝します! – genericguy25

+0

定数を乗数と間違えていると思います。乗数は変更できません。 – jrturton

答えて

0

それを行うには正しい方法です。

+0

ああ、ちょうど私のIBを振り返ってみると、実際には定数ではなく乗数を変更する必要があります。乗数は読み込み専用のようです。 – genericguy25

+0

あなたがあなたの問題を解決することができれば、他の人も解決策を見ることができるようにあなた自身の質問に答える必要があります。そうでない場合は...制約を変更する方法は、定数で再生し、新しい値を設定してからself.view.layoutIfNeeded()を実行することです。 – John

関連する問題