ストーリーボードを使用して、下部のUITableViewとUIViewで構成されるレイアウトを作成しています。私はUIStackViewを使用し、それらを垂直に再生しています。 UITableViewで高さの80%を取得し、UIView(フッター)で20%を取得する必要があります。私はUIStackViewのFill Proportionallyオプションを使用していますが、Xcodeプレビューでも見栄えは良いですが、アプリを実行すると正しくレンダリングされません。私はそれがどのように見えるようにしたいのですか?
そして、実行すると次のようになります。
アイデア?
TableView.heightをビューのサイズの4倍にするには、明示的な制約を設定する必要があります。固有のコンテンツサイズがないため、stackView
はスペースを適切に埋める方法を「知りません」。
また、.fill
は固有のコンテンツサイズを使用して適切な配布を決定するため、配布モードを.fillProportionally
に設定します( docs からの抜粋):
ケースフィル
スタックビューが配置されたビューのサイズを変更して、スタックビューの軸に沿って利用可能なスペースを埋めるレイアウト。ビューは、スタックビューの軸に沿った固有のコンテンツサイズに基づいて比例的にサイズ変更されます。
制約を使用して、固有のコンテンツサイズを使用せずに、明示的にサイズを設定しています。したがって、.fillProportionally
は機能しません。その場合、stackView
はview.intrinsicContentSize
によって返された値を直接使用すると仮定します。ただし、制約はview.intrinsicContentSize
を変更しません。
コードでそれを行う場合、これでそれを行うことができます:
tableView.heightAnchor.constraint(equalTo: myView.heightAnchor, multiplier: 4).isActive = true
ストーリーボードで、tableView
からmyView
へのドラッグを制御し、Equal Heights
を選択します。
次に、作成された制約を選択し、適切な乗数を設定します。