2017-12-27 9 views
0

スタックビューに新しいビューを追加するとき、スタックビューの高さの制約を追加ビューの分だけ増やして、スタックビュー内のビューの比率を維持する。私はビューの制約を更新する方法を読んできましたが、それは動作しないようです。ビューをスタックビューに追加し、高さ制約を変更して比率を維持する

self.stackView?.insertArrangedSubview(self.userErrorLabel, at: 2) 
self.heightConstraint = self.stackView?.heightAnchor.constraint(equalToConstant: 140 + self.stackView?.bounds.height) 
self.stackView?.addConstraints([self.heightConstraint!]) 
self.stackView?.setNeedsLayout() 

アドバイスは非常に参考になります!

+0

任意の制約を追加または削除する必要はありませんあなたは

@IBOutlet weak var stackViewHeight: NSLayoutConstraint! 

として、高さ制約を登録することを言います – User511

+0

あなたは制約を追加するたびに、以前のすべての制約を無効にする必要があります。新しい制約をアクティブにすると、他の競合が発生する可能性があります。 take [ref](https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html) –

+0

サブビューを追加するたびにstackViewに新しい制約を追加しないでください。スタックビューの高さを更新するだけです。 – ridvankucuk

答えて

0

XIBまたはストーリーボードを使用していますか?ビュー/ VCにアウトレットとして高さの制約を登録し、そこで高さを編集/増やすことができます。 letがあなたがする必要があるすべてはちょうど

let currentStackHeight = stackViewHeight.constant 
stackViewHeight.constant = currentStackHeight + self.addedView.bounds.height 

で、ちょうどそのように、あなたは

関連する問題