2016-10-26 6 views
7

したがって、UIStackViewには4つの(4)UIViewが含まれています。それらのうちの1つを削除すると、残りの3つはUIStackViewの全領域を埋めるでしょう。UIStackView Distribution Fill Equally

私の質問:それはUIStackViewの空間全体を埋めないように

がどのように分布が均等に満たされているにもかかわらず、UIView上の最大高さを追加することができますか?私は制約を加えることについて何かを読んだが、それを動作させることはできない。私は途中で迅速に使用しています。

ありがとうございます。

答えて

8

私が間違えていないよ場合は、あなたが直面していることである。

enter image description here

そして何を求めていることは次のとおりです。

enter image description here

まあ、それはあなたのケースだ場合 - 私はそれが願っています。私はかなり単純なトリックを行うことでこれを達成しました:

PS:私はあなたのstackViewのapprorpriate制約を追加したと仮定します。

あなたstackViewは、「高さ」制約を持っているものを追加していない場合は、次の

enter image description here

さて、割り当てられたのViewControllerにIBOutletとして追加し、私の例では私が呼んでいますそれstackHeight:あなたは私の例-inビューを非表示にするイベントで

@IBOutlet weak var stackHeight: NSLayoutConstraint! 

、私はIBActionにbesedオレンジ色のボタンを隠してること自体にassinged、それをタップすると、SHスタックビューの下端に制約を外し

@IBAction func orangeTapped(_ sender: AnyObject) { 
     orange.isHidden = true 

     // here we go: 
     stackHeight.constant = stackHeight.constant - orange.frame.size.height 
    } 
+0

あなたの視覚的な例はまさに私が直面している問題です、うわー!そのような素晴らしいアイデア、アーマド。私はこのトリックを試し、あなたの投稿を保つ:)感謝。 – Bnj

+1

喜んで助けてください、あなたは必要に応じてコメントを撃つことができます。 –

+0

こんにちは、再びアーマド!私は今問題を解決しました。しかし、私は別の問題に遭遇する!ここにシナリオがあります。私は "Column1StackView"と "Column2StackView"と "ColumnContainerStackView"を持っています。両方とも4つのUIViewを持っています。 Column1で1つのUIViewを削除すると、Column2はColumn1の高さに従います。 Column2のColumn1の高さに従わないようにするにはどうすればよいですか?ありがとう。 – Bnj

0

スタックビューのAttributesインスペクタの[Distribution]プロパティを[Equal spacing]に変更してみてください。それは動作するはずです。

または、スタックビューで均等に残りの3つのビューを塗りつぶすように変更できます。

+0

これは動作しません... –

+0

@AhmadFどうしてですか?私はちょうどそれを試み、それは私のために正常に動作します! –

+1

それはそれらの間にスペースを保持し、それらは一緒にくっついていない、すなわちspacing!= 0、削除されたビューの幅/高さを他の3つのビューの間のスペースとして分配する。 –

0

:あなたは非表示とstackHeight.constantから減算するビューの高さを取得する必要がありますhidden-ことウルド。次に、表示されるコントロールに合わせるようにサイズが変更されます。