2016-08-23 3 views
1

最新のプロジェクトにUIStackViewのいくつかを導入しました。ビューの間隔を広げ、他の自動レイアウト制約をもっと簡単に加えるためです。隠れているときにautolayoutに参加しているUIStackViewのサブビューを維持する方法はありますか?

autolayoutがそのことを行うときに、UIStackView内の隠れたビューがもはや「参加」されないことを発見するだけです。

これはしばしば素晴らしい機能だと思いますが、この特定のビューでは私は望んでいません.UIStackViewのサブビューをプレーンなUIViewに埋め込まれているかのように振る舞う方法がありますか?
UIStackViewsを削除することに頼っていますか? (そして厄介な「スペーサー」ビューと制約をたくさん追加する)

答えて

2

hiddenアレンジされたサブビューは隠されているだけでなく、レイアウトにも貢献しません。自動レイアウトでは簡単に達成できない大きな特徴です。

これを防ぐには、ビューを別のビュー内にラップすることができます。 UIStackView(新しい設定のラッパービュー)の直接的なサブビューを隠す代わりに、内側のビューを非表示にします(これは、現在ネストされている以外は古い設定と同じです)。ダイレクトサブビューが表示されるので、UIStackViewはスペースを再利用しません。しかし、ユーザは、表示内容が隠されているので、コンテンツを見ることができない。

+0

これは簡単なことですが、おかげです。 – Pieter

0

サブビューを隠す代わりに、アルファを0にするだけで、サブビューは表示されませんが、レイアウトに参加します。

+0

触れておかなければならない点がいくつかあります:隠しビューはタッチイベントを聞きません。ゼロレベル以下のアルファであっても目に見えないことを意味し、Appleは目に見えないものが触れるのを好まない。アルファを使用するには、グラフィックスハードウェアが各ピクセルとそれを計算に集中させる必要があります。 – pedrouan

関連する問題