3

次のようにビューを設定しようとしています

レイアウト

各ビューには、ラベルやボタンなどの多数の子ビューが含まれています。私のプロジェクトでは、自動レイアウトを使用する必要があります。具体的には、FLKAutolayout と呼ばれるサードパーティのライブラリを使用しています。これにより、処理が高速化されます。問題は、これらのビューのそれぞれに動的な高さがあることです。各ビューの両側を親ビューの両側に固定しても問題ありません。しかし、縦に並べるとあいまいなレイアウトに出くわします。ビュー 1 をスーパービューの上部に固定し、ビュー 2 の上部をビュー 1 の下部に固定し、ビュー 3 の上部をビュー 2 の下部に固定する、などを試みました。一番下のビューをスーパービューの一番下に固定しないと、何も表示されません。一番下のビューをスーパービューの一番下に固定すると、一番上のビューだけが画面全体に引き伸ばされます。高さを任意の量に手動で制限すると、問題なく表示されます。もちろん、コンテンツによって高さが異なるため、実際にはどの高さを使用すればよいかわかりません。

高さが可変のビューの配列を管理するための適切な戦略はありますか? また、ビューの合計の高さが、これらの垂直ビューを含むビュー コントローラーのビューの高さのサイズよりも大きくなる可能性がある (可能性が高い) ことを追加する必要があると思います。最終的には UIScrollView でそれらをスクロールできるようにしたいのですが、今のところ、オフスクリーンで続行しても問題ありません。

4

3 に答える 3

3

それぞれ方法UIViewがあり-(CGSize)intrinsicContentSizeます。ビューのコンテンツが動的に変化する場合は、メソッドをオーバーライドして、ビューのコンテンツに基づいて適切なサイズを返す必要があります。自動レイアウトは、この情報を使用してビューの高さを計算します。-(void)invalidateIntrinsicContentSize固有のサイズが変更されたことをシステムに知らせるために、呼び出しが必要になる場合があります。ところで: Apple が提供するほとんどの UIKIT クラスは、既に適切な固有サイズを提供しています。

于 2013-07-11T20:19:11.477 に答える