2017-04-27 10 views
1

私は水平スタックビューで5つの要素を持っています。ある時点では、インデックス1と2の要素を隠します.1ptの間隔があり、要素1と2が隠されている場合、要素0と要素3の間隔は要素0と要素1の間隔の合計ですそして2、及び2と3 マイスタックビューのプロパティは次のとおりです。配置されたサブビューが隠されていても、UIStackViewはスペーシングをスタックするようです。

stackView.axis = .horizontal 
stackView.distribution = .fillEqually 
stackView.spacing = 1pt 

私の質問は:どのように私はそれらの間隔の合計を削除することができます。私の意見では、このように振る舞うべきではありません。私は何かを逃していますか?

+1

スタックからビューを削除する必要があるかもしれません - 隠すだけで間隔を削除することはできません。 – DonMag

+1

私はそれがスタックビューのアレンジされたサブビューにリンクされたisHiddenプロパティの目的を破ると思う。 – Plot

+1

アップルのドキュメントから:*「スタックから最初に配置されたビューを削除するように見えます。ビューはまだスタック内にあり、表示されなくなり、レイアウトにもはや寄与しません」* - そう、**ビュー**はもはやレイアウトには寄与しませんが、それでもなお "there"なので、** spacing **値はまだ使用されています。 (注:私はAppleのために働いていない - 私の解釈のみ) – DonMag

答えて

0

私は同じ問題に遭遇しました、または私は考えました。私の場合の問題の原因は、ビューの代わりにビューの単一の子を間違って隠していたことです(以前はスタックビューの直下の子でした​​)ので、ビューはレンダリングされないように視覚的に現れましたそうだった。実際のビューを隠すように変更すると、問題は消えます。

つまり、私はUILabelを持っていました。これは、私が隠していた/見えなくなっていたUIStackViewに追加されました。後で私はラベルをビューに埋め込み、私が隠していた/隠れていたアウトレットを変更していないので、ラベルをつけたままで、スタックビュー(高さゼロ)でレンダリングされました。

+0

わかりません。 「ビューの単一の子」とはどういう意味ですか? – Plot

+0

@Plot私は答えを更新しました。 – Cristik

関連する問題