前提
2 つのサブビュー A と B を単純に含むスーパービュー C があります。ASCII アート:
+-----------+
| view A |
| view B |
+-----------+
ここに私が欲しいものがあります:
A のトップは C のトップに固定する必要があります。A の身長は何にも固定されていません。実際にはその内容に応じて変化します: それは scrollview-less
NSTextView
です。B の上部は、A の下部から常に 10 ピクセルでなければなりません。B のボトムは常に C のボトムに固定する必要があります。
ビュー C 全体を A と B に分割する必要があり、A と B の間の分割は A の現在の高さ ( によって決定されるNSTextView
) によって決定する必要があり、B は A によって占有されていない残りのスペースを埋める必要があります。
つまり: A がトップにとどまります。B はスーパービューの残りの部分を埋めます。Aが成長するにつれて、Bは下に押し出されます。
問題
Interface Builder は常に、B の上部を C の上部に固定する削除不可能な制約を作成します。これは、B が常に特定の Y 位置に配置されることを意味します。B に高さの制約を与えると、これは起こりませんが、それは私が望んでいることではありません。
スーパービューを実装して、updateConstraints
この IB 生成の制約を削除しようとしました。そういうのもいいのですが、こうするとBのトップが調整されず、勝手に設定されているように見えてしまいます。制約の優先度を何に設定しても、B は C の下部、上部、または画面から離れた場所に配置されます。また、A は成長して C 全体を埋めるように見えます。
これは、私が取り除くことができない自動作成された制約です。
追加の詳細
C はビューベースのセル ビューであることを付け加えておきますNSTableView
。A と B を に合わせるために必要な高さを計算しtableView:heightOfRow
、制約がすべてをレイアウトすることを期待します。